<?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>213372</bug_id>
          
          <creation_ts>2020-06-19 05:48:48 -0700</creation_ts>
          <short_desc>[JSC][ESNext] Create a new opcode to handle private fields store/define</short_desc>
          <delta_ts>2020-11-19 13:10:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214421</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>213545</dependson>
          <blocked>194434</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>annulen</cc>
    
    <cc>caitp</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1664324</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-06-19 05:48:48 -0700</bug_when>
    <thetext>Now we are using `put_by_val_direct` with a `PutByValFlags` to indicate such operation, but while there are some similarities of `put_by_val_direct`, the semantics of set/define operation of private fields are different enough to be profitable adding a new opcode for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664430</commentid>
    <comment_count>1</comment_count>
      <attachid>402297</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-06-19 11:21:26 -0700</bug_when>
    <thetext>Created attachment 402297
WIP - Patch

It starts the implementation. There is a lot of work to do yet like refactoring (there is a lot of repeated code) and rolling back the usage of private fields from `put_by_val_direct`. DFG/FTL support is not done as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665041</commentid>
    <comment_count>2</comment_count>
      <attachid>402297</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-06-22 08:20:33 -0700</bug_when>
    <thetext>Comment on attachment 402297
WIP - Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:581
&gt; +        flags: PutByValFlags,

Do we want to keep PutByValFlags around? Since they only existed to distinguish put-by-val from put-private-field operations, I think we could replace it with a simpler flag here that just distinguishes between the define and update operations. It would free up a few bits for PutByVal&apos;s own flags, if it ever needs to add new ones. We don&apos;t necessarily need to remove PutByValFlags entirely, but it might make sense to remove the private-specific parts of it

&gt; Source/JavaScriptCore/jit/JITInlines.h:708
&gt; +ALWAYS_INLINE ECMAMode JIT::ecmaMode&lt;OpPutPrivateName&gt;(OpPutPrivateName)

this seems to be unused now in this patch, is it needed by JITInlineCacheGenerator?

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1354
&gt; +    // and class methods are always in strict mode

nit: if we&apos;re going to have this informational comment, lets add `const bool isStrictMode = true;` to make it obvious what it&apos;s talking about --- A lot of us don&apos;t have PutPropertySlot parameter names memorized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670517</commentid>
    <comment_count>3</comment_count>
      <attachid>402297</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-10 12:18:56 -0700</bug_when>
    <thetext>Comment on attachment 402297
WIP - Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:581
&gt;&gt; +        flags: PutByValFlags,
&gt; 
&gt; Do we want to keep PutByValFlags around? Since they only existed to distinguish put-by-val from put-private-field operations, I think we could replace it with a simpler flag here that just distinguishes between the define and update operations. It would free up a few bits for PutByVal&apos;s own flags, if it ever needs to add new ones. We don&apos;t necessarily need to remove PutByValFlags entirely, but it might make sense to remove the private-specific parts of it

After the refactoring I applied, I don&apos;t think `PutByValFlags` makes much sense now and I removed it. I&apos;m using a `PrivateFieldPutKind` instead.

&gt;&gt; Source/JavaScriptCore/jit/JITInlines.h:708
&gt;&gt; +ALWAYS_INLINE ECMAMode JIT::ecmaMode&lt;OpPutPrivateName&gt;(OpPutPrivateName)
&gt; 
&gt; this seems to be unused now in this patch, is it needed by JITInlineCacheGenerator?

I don&apos;t think this is would be necessary anymore. I&apos;ll remove it.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1354
&gt;&gt; +    // and class methods are always in strict mode
&gt; 
&gt; nit: if we&apos;re going to have this informational comment, lets add `const bool isStrictMode = true;` to make it obvious what it&apos;s talking about --- A lot of us don&apos;t have PutPropertySlot parameter names memorized

Agreed. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670520</commentid>
    <comment_count>4</comment_count>
      <attachid>403988</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-10 12:22:28 -0700</bug_when>
    <thetext>Created attachment 403988
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671459</commentid>
    <comment_count>5</comment_count>
      <attachid>404260</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-14 11:55:21 -0700</bug_when>
    <thetext>Created attachment 404260
WIP - Patch

It adds DFG and FTL support for 32-bits and some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671937</commentid>
    <comment_count>6</comment_count>
      <attachid>404394</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-15 14:26:10 -0700</bug_when>
    <thetext>Created attachment 404394
WIP - Patch

Patch is almost done, let&apos;s see EWS results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672172</commentid>
    <comment_count>7</comment_count>
      <attachid>404459</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-16 10:12:24 -0700</bug_when>
    <thetext>Created attachment 404459
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672487</commentid>
    <comment_count>8</comment_count>
      <attachid>404563</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-17 08:12:15 -0700</bug_when>
    <thetext>Created attachment 404563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672488</commentid>
    <comment_count>9</comment_count>
      <attachid>404563</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-17 08:15:22 -0700</bug_when>
    <thetext>Comment on attachment 404563
Patch

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

&gt; Source/JavaScriptCore/runtime/OptionsList.h:568
&gt; +    v(usePrivateClassFields, SupportsDFG | SupportsFTL, &quot;https://bugs.webkit.org/show_bug.cgi?id=212781&quot;, &quot;https://bugs.webkit.org/show_bug.cgi?id=212784&quot;)

I changed it and also added `runNoDFG` mode into some tests that emit `get_private_name` to be able to see EWS run with JIT configurations of `put_private_name`. This should be changed back `LLIntAndBaselineOnly` until we get proper JIT support of both `put_private_name` and `get_private_name`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672511</commentid>
    <comment_count>10</comment_count>
      <attachid>404563</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-07-17 09:37:10 -0700</bug_when>
    <thetext>Comment on attachment 404563
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6060
&gt; +                        compiledAsPutById = true;

nit: I would write this as `didCompileAsPutById`, to make the past tense more obvious

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6068
&gt; +                        if (identifier.isSymbolCell())

lets just `ASSERT(identifier.isSymbolCell())`, since it has to be, and will make the code a bit simpler

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6083
&gt; +                    handlePutById(base, identifier, identifierNumber, value, putByIdStatus, isDirect, nextOpcodeIndex(), ECMAMode::strict());

nit: there&apos;s no reason we can&apos;t do this in the block above where `compiledAsPutById` is set to true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672597</commentid>
    <comment_count>11</comment_count>
      <attachid>404563</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-17 13:32:54 -0700</bug_when>
    <thetext>Comment on attachment 404563
Patch

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

I&apos;ve found a bug

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6083
&gt;&gt; +                    handlePutById(base, identifier, identifierNumber, value, putByIdStatus, isDirect, nextOpcodeIndex(), ECMAMode::strict());
&gt; 
&gt; nit: there&apos;s no reason we can&apos;t do this in the block above where `compiledAsPutById` is set to true

The way we are compiling here is wrong. In a case where we have a megamorphic callsite, this will compile as PutByID but slow path won&apos;t have the proper semantics for private fields. A test case for it is also needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673933</commentid>
    <comment_count>12</comment_count>
      <attachid>404951</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-22 12:49:41 -0700</bug_when>
    <thetext>Created attachment 404951
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674350</commentid>
    <comment_count>13</comment_count>
      <attachid>405073</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-23 13:56:42 -0700</bug_when>
    <thetext>Created attachment 405073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675695</commentid>
    <comment_count>14</comment_count>
      <attachid>405381</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-28 11:23:11 -0700</bug_when>
    <thetext>Created attachment 405381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675724</commentid>
    <comment_count>15</comment_count>
      <attachid>405391</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-28 12:19:50 -0700</bug_when>
    <thetext>Created attachment 405391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675995</commentid>
    <comment_count>16</comment_count>
      <attachid>405459</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-29 08:20:18 -0700</bug_when>
    <thetext>Created attachment 405459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676333</commentid>
    <comment_count>17</comment_count>
      <attachid>405459</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-30 01:09:36 -0700</bug_when>
    <thetext>Comment on attachment 405459
Patch

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

Continue reviewing, early comments.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:253
&gt; +        bool isDirect, BytecodeIndex osrExitIndex, ECMAMode, PrivateFieldPutKind = PrivateFieldPutKind::none());

We should not use default parameter here since it is hard to follow what is passed.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6078
&gt; +                handlePutById(base, identifier, identifierNumber, value, putByIdStatus, isDirect, nextOpcodeIndex(), ECMAMode::strict(), bytecode.m_putKind);

If we separate the bytecode from put_by_val_direct, then I think still using PutByIdDirect for op_put_private_name looks strange here. IIUC, there is semantics difference, so can we use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676349</commentid>
    <comment_count>18</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-30 04:20:35 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #17)
&gt; Comment on attachment 405459 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405459&amp;action=review
&gt; 
&gt; Continue reviewing, early comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:253
&gt; &gt; +        bool isDirect, BytecodeIndex osrExitIndex, ECMAMode, PrivateFieldPutKind = PrivateFieldPutKind::none());
&gt; 
&gt; We should not use default parameter here since it is hard to follow what is
&gt; passed.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6078
&gt; &gt; +                handlePutById(base, identifier, identifierNumber, value, putByIdStatus, isDirect, nextOpcodeIndex(), ECMAMode::strict(), bytecode.m_putKind);
&gt; 
&gt; If we separate the bytecode from put_by_val_direct, then I think still using
&gt; PutByIdDirect for op_put_private_name looks strange here. IIUC, there is
&gt; semantics difference, so can we use it?

We are using `bytecode.m_putKind` into the JITPutByIdGenerator and this will make we properly set slow path function for it when there is an IC miss (like it is done on Baseline), keeping the semantics correct (see `JITPutByIdGenerator::slowPathFunction`). We are storing `bytecode.m_putKind` into `PutByIdDirect`&apos;s OpInfo and using it on `SpeculativeJIT::compilePutByIdDirect` and `FTLLowerDFGToB3::compilePutById()`. The test case dedicated to validate this is `JSTests/stress/dfg-put-private-name-compiled-as-put-by-id-direct.js`. The usage of `PutByIdDirect` here is to be able to re-use all optimizations we already apply to it, including the constant folding and IC for generic cases.

One alternative we have is to avoid using `handlePutById` and only try to inline the IC on `PutByOffset` or `MultiPutByOffset`, while implementing all optimizations to `PutPrivateName`, like what&apos;s being proposed for `get_private_name`[1]. I&apos;m liking this alternative more than current patch, but I&apos;d rather implement it in a followup patch, though.

[1] - https://bugs.webkit.org/show_bug.cgi?id=214861</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677475</commentid>
    <comment_count>19</comment_count>
      <attachid>405459</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-03 16:13:06 -0700</bug_when>
    <thetext>Comment on attachment 405459
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        This patch is adding a new opcode to handle private field storage.
&gt; +        Before this change, we were using `put_by_val_direct` and including
&gt; +        the information of `PutKind` into `PutByValFlags`. We initially decided
&gt; +        to use `put_by_val_direct` to take advantage of all IC mechanism already
&gt; +        implemented for this instruction, however the semantics of private field
&gt; +        is different enough to complicate the understanding of
&gt; +        `put_by_val_direct`.

I agree. So I think we should not complicate DFG PutByIdDirect too.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:253
&gt;&gt;&gt; +        bool isDirect, BytecodeIndex osrExitIndex, ECMAMode, PrivateFieldPutKind = PrivateFieldPutKind::none());
&gt;&gt; 
&gt;&gt; We should not use default parameter here since it is hard to follow what is passed.
&gt; 
&gt; We are using `bytecode.m_putKind` into the JITPutByIdGenerator and this will make we properly set slow path function for it when there is an IC miss (like it is done on Baseline), keeping the semantics correct (see `JITPutByIdGenerator::slowPathFunction`). We are storing `bytecode.m_putKind` into `PutByIdDirect`&apos;s OpInfo and using it on `SpeculativeJIT::compilePutByIdDirect` and `FTLLowerDFGToB3::compilePutById()`. The test case dedicated to validate this is `JSTests/stress/dfg-put-private-name-compiled-as-put-by-id-direct.js`. The usage of `PutByIdDirect` here is to be able to re-use all optimizations we already apply to it, including the constant folding and IC for generic cases.
&gt; 
&gt; One alternative we have is to avoid using `handlePutById` and only try to inline the IC on `PutByOffset` or `MultiPutByOffset`, while implementing all optimizations to `PutPrivateName`, like what&apos;s being proposed for `get_private_name`[1]. I&apos;m liking this alternative more than current patch, but I&apos;d rather implement it in a followup patch, though.
&gt; 
&gt; [1] - https://bugs.webkit.org/show_bug.cgi?id=214861

If we share the DFG nodes, why do we need to introduce new bytecode in this patch?
Introducing new bytecodes while using shared DFG nodes is tricky.
You can add new DFG nodes (e.g. PutPrivateNameDirect), and wire existing optimizations to that DFG opcode.
I think we can use the same IC mechanism for different DFG nodes. (PutByIdDirect and PutPrivateNameDirect).
I agree to reusing cachePutById etc. We should reuse them.
But I don&apos;t think extending DFG PutByIdDirect is a good idea. We have a lot of strong assumption about PutByIdDirect.
If the behavior is sufficiently different, we should have different DFG nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677625</commentid>
    <comment_count>20</comment_count>
      <attachid>405922</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-04 08:37:26 -0700</bug_when>
    <thetext>Created attachment 405922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677640</commentid>
    <comment_count>21</comment_count>
      <attachid>405459</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-04 09:23:11 -0700</bug_when>
    <thetext>Comment on attachment 405459
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:253
&gt;&gt;&gt;&gt; +        bool isDirect, BytecodeIndex osrExitIndex, ECMAMode, PrivateFieldPutKind = PrivateFieldPutKind::none());
&gt;&gt;&gt; 
&gt;&gt;&gt; We should not use default parameter here since it is hard to follow what is passed.
&gt;&gt; 
&gt;&gt; We are using `bytecode.m_putKind` into the JITPutByIdGenerator and this will make we properly set slow path function for it when there is an IC miss (like it is done on Baseline), keeping the semantics correct (see `JITPutByIdGenerator::slowPathFunction`). We are storing `bytecode.m_putKind` into `PutByIdDirect`&apos;s OpInfo and using it on `SpeculativeJIT::compilePutByIdDirect` and `FTLLowerDFGToB3::compilePutById()`. The test case dedicated to validate this is `JSTests/stress/dfg-put-private-name-compiled-as-put-by-id-direct.js`. The usage of `PutByIdDirect` here is to be able to re-use all optimizations we already apply to it, including the constant folding and IC for generic cases.
&gt;&gt; 
&gt;&gt; One alternative we have is to avoid using `handlePutById` and only try to inline the IC on `PutByOffset` or `MultiPutByOffset`, while implementing all optimizations to `PutPrivateName`, like what&apos;s being proposed for `get_private_name`[1]. I&apos;m liking this alternative more than current patch, but I&apos;d rather implement it in a followup patch, though.
&gt;&gt; 
&gt;&gt; [1] - https://bugs.webkit.org/show_bug.cgi?id=214861
&gt; 
&gt; If we share the DFG nodes, why do we need to introduce new bytecode in this patch?
&gt; Introducing new bytecodes while using shared DFG nodes is tricky.
&gt; You can add new DFG nodes (e.g. PutPrivateNameDirect), and wire existing optimizations to that DFG opcode.
&gt; I think we can use the same IC mechanism for different DFG nodes. (PutByIdDirect and PutPrivateNameDirect).
&gt; I agree to reusing cachePutById etc. We should reuse them.
&gt; But I don&apos;t think extending DFG PutByIdDirect is a good idea. We have a lot of strong assumption about PutByIdDirect.
&gt; If the behavior is sufficiently different, we should have different DFG nodes.

I agree that sharing them is a recipe for headaches. I uploaded a new version that is not emitting `PutByIdDirect` when compiling `put_private_name` and the idea is to optimize `PutPrivateName` on https://bugs.webkit.org/show_bug.cgi?id=215126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678539</commentid>
    <comment_count>22</comment_count>
      <attachid>405922</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-07 02:22:12 -0700</bug_when>
    <thetext>Comment on attachment 405922
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4841
&gt;          if (!isDirect) {
&gt; +            ASSERT(privateFieldPutKind.isNone());
&gt;              for (unsigned variantIndex = putByIdStatus.numVariants(); variantIndex--;) {
&gt;                  if (putByIdStatus[variantIndex].kind() != PutByIdVariant::Transition)
&gt;                      continue;

We are using PutById / Direct path for private names. However privateFieldPutKind has Define / Set modes.
If Define and Set has different semantics, why can we use the same PutByOffset etc.? Can you explain it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678565</commentid>
    <comment_count>23</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-07 06:24:07 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #22)
&gt; Comment on attachment 405922 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405922&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4841
&gt; &gt;          if (!isDirect) {
&gt; &gt; +            ASSERT(privateFieldPutKind.isNone());
&gt; &gt;              for (unsigned variantIndex = putByIdStatus.numVariants(); variantIndex--;) {
&gt; &gt;                  if (putByIdStatus[variantIndex].kind() != PutByIdVariant::Transition)
&gt; &gt;                      continue;
&gt; 
&gt; We are using PutById / Direct path for private names. However
&gt; privateFieldPutKind has Define / Set modes.
&gt; If Define and Set has different semantics, why can we use the same
&gt; PutByOffset etc.? Can you explain it?

For now, we are only compiling `put_private_name` as `[Multi]PutByOffset` from information we get from stubInfo. This info is populated during Baseline IC slow path execution of private name on `operationPutByIdDefinePrivateFieldStrictOptimize` and `operationPutByIdPutPrivateFieldStrictOptimize` (this was already added by https://trac.webkit.org/changeset/262613). Once we have a stub for any given structure set, we can infer that put private field operations always succeed for this set, and we don&apos;t need to check for `Set|Define` semantics for those cases.

Since we emit a `CheckStructure` before `PutByOffset`, in case of a structure check miss, we will OSR and then perform the proper `Set|Define` semantics in whatever tier we OSR to. For cases where we decide to not emit `PutByOffset`, we then emit `PutPrivateName` and this node checks for `Set|Define` private field semantics.

We are testing OSR cases in `JSTests/stress/put-private-name-osr.js` and `JSTests/stress/put-private-name-set-before-define.js`. It is important to notice that a `put_private_name` with `Define` put kind will only have `PutByIdVariant::Transition` while the one with `Set` will only have `PutByIdVariant::Replace` (this should be added as an ASSERT).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678567</commentid>
    <comment_count>24</comment_count>
      <attachid>405922</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-07 06:25:49 -0700</bug_when>
    <thetext>Comment on attachment 405922
Patch

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

&gt; JSTests/stress/put-private-name-set-before-define.js:1
&gt; +//@ requireOptions(&quot;--allowUnsupportedTiers=true&quot;, &quot;--usePrivateClassFields=true&quot;)

This test is a duplicate of JSTests/stress/put-private-name-invalid-store.js. Also, this test is probably wrong on its purpose, since the idea here is to trigger an OSR due to `this.#foo` `BadCache`, put it is potentially getting invalidate when we execute `shouldStore = true;` within the for loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679396</commentid>
    <comment_count>25</comment_count>
      <attachid>406381</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-11 08:18:37 -0700</bug_when>
    <thetext>Created attachment 406381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679404</commentid>
    <comment_count>26</comment_count>
      <attachid>406381</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-08-11 08:51:48 -0700</bug_when>
    <thetext>Comment on attachment 406381
Patch

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

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1168
&gt; +        if (++byValInfo-&gt;slowPathCount &gt;= 10)

Would it make sense to define this in an JSC::Options field instead of just hardcoding `10` here?

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1551
&gt; +        genericFunction = bytecode.m_putKind.isDefine() ? operationDefinePrivateNameGeneric : operationSetPrivateNameGeneric;

It might be better to give PutPrivateName its own JIT and DFG handling. There are downsides, but it seems less fragile than sharing with PutByID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680292</commentid>
    <comment_count>27</comment_count>
      <attachid>406597</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-14 09:25:06 -0700</bug_when>
    <thetext>Created attachment 406597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680848</commentid>
    <comment_count>28</comment_count>
      <attachid>406725</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-17 10:21:40 -0700</bug_when>
    <thetext>Created attachment 406725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682764</commentid>
    <comment_count>29</comment_count>
      <attachid>407222</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-25 13:11:05 -0700</bug_when>
    <thetext>Created attachment 407222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683661</commentid>
    <comment_count>30</comment_count>
      <attachid>407475</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-08-28 09:15:30 -0700</bug_when>
    <thetext>Created attachment 407475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685219</commentid>
    <comment_count>31</comment_count>
      <attachid>407475</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-03 01:55:42 -0700</bug_when>
    <thetext>Comment on attachment 407475
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:4050
&gt;              PutByIdStatus status = PutByIdStatus::computeFor(

Inside PutByIdStatus::computeFor, it can find transitioned-structure by adding a new property. And this transition can be constructed in different &quot;define&quot; type PutPrivateName.
But even if this PutPrivateNameById is &quot;set&quot; version, this structure transition will be populated here, and I think this is not correct.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1406
&gt; +        PutByIdStatus status = PutByIdStatus::computeFor(
&gt; +            m_graph.globalObjectFor(origin.semantic),
&gt; +            baseValue.m_structure.toStructureSet(),
&gt; +            node-&gt;cacheableIdentifier().uid(),
&gt; +            isDirect);

Ditto. I think this can populate adding-property-structure-transition case even if this is &quot;set&quot; PutPrivateNameById.

&gt; Source/JavaScriptCore/jit/JIT.h:172
&gt; +        ByValCompilationInfo(ByValInfo* byValInfo, BytecodeIndex bytecodeIndex, MacroAssembler::PatchableJump notIndexJump, MacroAssembler::Label doneTarget, MacroAssembler::Label nextHotPathTarget)
&gt; +            : byValInfo(byValInfo)
&gt; +            , bytecodeIndex(bytecodeIndex)
&gt; +            , notIndexJump(notIndexJump)
&gt; +            , doneTarget(doneTarget)
&gt; +            , nextHotPathTarget(nextHotPathTarget)
&gt; +        {
&gt; +        }

Need to update this to setUp function which stores these fields to avoid overriding bytecodeIndex again.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:378
&gt; +    ByValInfo* byValInfo = m_codeBlock-&gt;addByValInfo();

Need to update it to pass bytecodeIndex.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:545
&gt;              return operationPutByIdDirectStrict;
&gt; -        if (putKind == DirectPrivateFieldCreate)
&gt; +        if (putKind == DirectPrivateFieldDefine)
&gt;              return operationPutByIdDefinePrivateFieldStrict;
&gt; -        if (putKind == DirectPrivateFieldPut)
&gt; -            return operationPutByIdPutPrivateFieldStrict;
&gt; +        if (putKind == DirectPrivateFieldSet)
&gt; +            return operationPutByIdSetPrivateFieldStrict;
&gt;          return operationPutByIdStrict;

Let&apos;s convert it to switch to avoid missing some kinds.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:561
&gt;          if (putKind == Direct)
&gt;              return operationPutByIdDirectStrictOptimize;
&gt; -        if (putKind == DirectPrivateFieldCreate)
&gt; +        if (putKind == DirectPrivateFieldDefine)
&gt;              return operationPutByIdDefinePrivateFieldStrictOptimize;
&gt; -        if (putKind == DirectPrivateFieldPut)
&gt; -            return operationPutByIdPutPrivateFieldStrictOptimize;
&gt; +        if (putKind == DirectPrivateFieldSet)
&gt; +            return operationPutByIdSetPrivateFieldStrictOptimize;
&gt;          return operationPutByIdStrictOptimize;

Let&apos;s convert it to switch to avoid missing some kinds.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:-1196
&gt; -    if (subscript.isDouble()) {
&gt; -        ASSERT(!isPrivateFieldAccess);
&gt; -        double subscriptAsDouble = subscript.asDouble();
&gt; -        uint32_t subscriptAsUInt32 = static_cast&lt;uint32_t&gt;(subscriptAsDouble);
&gt; -        if (subscriptAsDouble == subscriptAsUInt32 &amp;&amp; isIndex(subscriptAsUInt32)) {
&gt; -            baseObject-&gt;putDirectIndex(globalObject, subscriptAsUInt32, value, 0, isStrictMode ? PutDirectIndexShouldThrow : PutDirectIndexShouldNotThrow);
&gt; -            LLINT_END();
&gt; -        }
&gt; -    }

Why is it removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685257</commentid>
    <comment_count>32</comment_count>
      <attachid>407475</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-03 08:08:51 -0700</bug_when>
    <thetext>Comment on attachment 407475
Patch

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

Thank you very much for the review

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:4050
&gt;&gt;              PutByIdStatus status = PutByIdStatus::computeFor(
&gt; 
&gt; Inside PutByIdStatus::computeFor, it can find transitioned-structure by adding a new property. And this transition can be constructed in different &quot;define&quot; type PutPrivateName.
&gt; But even if this PutPrivateNameById is &quot;set&quot; version, this structure transition will be populated here, and I think this is not correct.

This is definitely not correct. I added a test that is wrongly optimized by this bug. Thanks for the catch.

&gt;&gt; Source/JavaScriptCore/jit/JIT.h:172
&gt;&gt; +        }
&gt; 
&gt; Need to update this to setUp function which stores these fields to avoid overriding bytecodeIndex again.

I see a `setUp` function into `ByValInfo`, but not into `ByValCompilationInfo`.  I added this new constructor since there&apos;s no `badTypeJump`, `arrayMode` and `arrayProfile` for `put_private_name` case.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:-1196
&gt;&gt; -    }
&gt; 
&gt; Why is it removed?

This was introduced by https://trac.webkit.org/changeset/262613 and I&apos;m reverting all changes of `put_by_val_direct` from this bug. TBH, I don&apos;t know was this was introduced back in that revision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685274</commentid>
    <comment_count>33</comment_count>
      <attachid>407884</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-03 09:09:25 -0700</bug_when>
    <thetext>Created attachment 407884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685615</commentid>
    <comment_count>34</comment_count>
      <attachid>407964</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-04 05:56:15 -0700</bug_when>
    <thetext>Created attachment 407964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685651</commentid>
    <comment_count>35</comment_count>
      <attachid>407972</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-04 08:05:49 -0700</bug_when>
    <thetext>Created attachment 407972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685664</commentid>
    <comment_count>36</comment_count>
      <attachid>407977</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-04 08:33:34 -0700</bug_when>
    <thetext>Created attachment 407977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686359</commentid>
    <comment_count>37</comment_count>
      <attachid>408180</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-07 07:56:52 -0700</bug_when>
    <thetext>Created attachment 408180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686360</commentid>
    <comment_count>38</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-07 08:02:07 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #37)
&gt; Created attachment 408180 [details]
&gt; Patch

This fixed some nits and added microbenchmarks. Here are results for reference:

```
Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                           baseline                  changes                                      
Microbenchmarks:
   put-public-field                    21.2727+-0.4655           21.0484+-0.5071          might be 1.0107x faster
   polymorphic-put-public-field        36.0990+-1.2683     ?     36.8361+-1.6222        ? might be 1.0204x slower

   &lt;geometric&gt;                         27.7048+-0.6616     ?     27.8283+-0.6683        ? might be 1.0045x slower

                                           baseline                  changes                                      
PrivateFieldsBench:
   put-private-field                   51.0347+-2.2051     ^     21.5075+-0.3837        ^ definitely 2.3729x faster
   polymorphic-put-private-field      148.8444+-0.9087     ^     36.8156+-0.8545        ^ definitely 4.0430x faster

   &lt;geometric&gt;                         87.1192+-1.8639     ^     28.1339+-0.4085        ^ definitely 3.0966x faster

                                           baseline                  changes                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                     49.1189+-0.8266     ^     27.9757+-0.3906        ^ definitely 1.7558x faster
```

We can see that it makes private fields put operations significantly faster and considering DFG/FTL, we have same performance numbers than common properties. It&apos;s also important to notice that PrivateFields bench on &quot;baseline&quot; version is not running with JIT enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688788</commentid>
    <comment_count>39</comment_count>
      <attachid>408180</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-15 11:53:34 -0700</bug_when>
    <thetext>Comment on attachment 408180
Patch

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

&gt; Source/JavaScriptCore/bytecode/PutByIdStatus.cpp:316
&gt;                  return PutByIdStatus(TakesSlowPath);

Is this

if (isValidOffset(offset)) {
    ...
}

correct for define case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688815</commentid>
    <comment_count>40</comment_count>
      <attachid>408180</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-15 13:03:25 -0700</bug_when>
    <thetext>Comment on attachment 408180
Patch

Discussed with Caio at Slack. My suggestion is that we should have branches and ASSERTs in code that is newly exercised by PutPrivate to ensure that this new semantic is correctly handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688824</commentid>
    <comment_count>41</comment_count>
      <attachid>408180</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-15 13:29:03 -0700</bug_when>
    <thetext>Comment on attachment 408180
Patch

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

Commented, I think the change is being really solid. I think we should make PutByIdStatus / PutByIdVariant / ComplexPutById etc. robust against private name things, and after that the change looks good :)

&gt; Source/JavaScriptCore/dfg/DFGNode.h:2298
&gt; +        if (op() == PutPrivateName || op() == PutPrivateNameById)

I think you can just remove this and return `return PrivateFieldPutKind::fromByte(m_opInfo2.as&lt;uint8_t&gt;());` since we have `ASSERT(hasPrivateFieldPutKind());`.

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:160
&gt; +        return operationPutByIdDefinePrivateFieldStrictOptimize;

Let&apos;s make this function switch. This will prevent us from missing new m_putKind handling. m_putKind did not have many kinds. But now it has. If the enum has various kinds, switch is better for readability &amp; avoids the bug missing handling some values.

switch (m_putKind) {
case DirectPrivateFieldSet: {
    ASSERT(m_ecmaMode.isStrict());
    return operationPutByIdSetPrivateFieldStrictOptimize;
}
case DirectPrivateFieldDefine: {
    ASSERT(m_ecmaMode.isStrict());
    return operationPutByIdDefinePrivateFieldStrictOptimize;
}
case Direct: {
    if (m_ecmaMode.isStrict())
        return operationPutByIdDirectStrictOptimize;
    return operationPutByIdDirectNonStrictOptimize;
}
case NonDirect: {
    if (m_ecmaMode.isStrict())
        return operationPutByIdStrictOptimize;
    return operationPutByIdNonStrictOptimize;
}
}

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1188
&gt; +        baseObject-&gt;putPrivateField(globalObject, propertyName, value, slot);

I suggest renaming putPrivateField to setPrivateField.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1213
&gt; +    baseObject-&gt;putPrivateField(globalObject, propertyName, value, slot);

I suggest renaming putPrivateField to setPrivateField.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:-1197
&gt; -    if (subscript.isDouble()) {
&gt; -        ASSERT(!isPrivateFieldAccess);
&gt; -        double subscriptAsDouble = subscript.asDouble();
&gt; -        uint32_t subscriptAsUInt32 = static_cast&lt;uint32_t&gt;(subscriptAsDouble);
&gt; -        if (subscriptAsDouble == subscriptAsUInt32 &amp;&amp; isIndex(subscriptAsUInt32)) {
&gt; -            baseObject-&gt;putDirectIndex(globalObject, subscriptAsUInt32, value, 0, isStrictMode ? PutDirectIndexShouldThrow : PutDirectIndexShouldNotThrow);
&gt; -            LLINT_END();
&gt; -        }
&gt; -    }
&gt; -

I think it is worth keeping it. Let&apos;s keep it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689092</commentid>
    <comment_count>42</comment_count>
      <attachid>408180</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-16 08:22:31 -0700</bug_when>
    <thetext>Comment on attachment 408180
Patch

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

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:-1197
&gt;&gt; -
&gt; 
&gt; I think it is worth keeping it. Let&apos;s keep it for now.

I don&apos;t see how this path adds anything that previous `subscript.tryGetAsUint32Index()` is covering. From `subscript.tryGetAsUint32Index` we already check if it `isNumber` and also checks if it&apos;s a valid `uint32_t` and is index. @caitp do you remember why you added it on https://trac.webkit.org/changeset/262613 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689483</commentid>
    <comment_count>43</comment_count>
      <attachid>409045</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-17 09:51:22 -0700</bug_when>
    <thetext>Created attachment 409045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689537</commentid>
    <comment_count>44</comment_count>
      <attachid>409053</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-17 11:51:13 -0700</bug_when>
    <thetext>Created attachment 409053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690332</commentid>
    <comment_count>45</comment_count>
      <attachid>409281</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-21 09:52:20 -0700</bug_when>
    <thetext>Created attachment 409281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690614</commentid>
    <comment_count>46</comment_count>
      <attachid>409344</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-21 19:12:27 -0700</bug_when>
    <thetext>Created attachment 409344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690649</commentid>
    <comment_count>47</comment_count>
      <attachid>409344</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-22 01:03:59 -0700</bug_when>
    <thetext>Comment on attachment 409344
Patch

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

r=me

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:170
&gt; +    default:
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return nullptr;

Let&apos;s remove this default clause. To make it possible, let&apos;s make PutKind enum class. Then, we can purge this default clause. This make it possible that future extension of PutKind will warn at compile time.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:555
&gt; +    default:
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return nullptr;

Ditto.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:578
&gt; +    default:
&gt; +        RELEASE_ASSERT_NOT_REACHED(); 
&gt; +        return nullptr;

Ditto.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1189
&gt;      if (subscript.isDouble()) {
&gt; -        ASSERT(!isPrivateFieldAccess);
&gt;          double subscriptAsDouble = subscript.asDouble();
&gt;          uint32_t subscriptAsUInt32 = static_cast&lt;uint32_t&gt;(subscriptAsDouble);
&gt;          if (subscriptAsDouble == subscriptAsUInt32 &amp;&amp; isIndex(subscriptAsUInt32)) {

OK, now I understand. `subscript.tryGetAsUint32Index` subsumes this branch. So, this is dead code. Then we can remove it.

&gt; Source/JavaScriptCore/runtime/PrivateFieldPutKind.cpp:39
&gt; +    if (isSet())
&gt; +        out.print(&quot;Set&quot;);
&gt; +    else
&gt; +        out.print(&quot;Define&quot;);

Let&apos;s support None too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690954</commentid>
    <comment_count>48</comment_count>
      <attachid>409429</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-22 17:23:57 -0700</bug_when>
    <thetext>Created attachment 409429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690982</commentid>
    <comment_count>49</comment_count>
      <attachid>409441</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-22 19:24:38 -0700</bug_when>
    <thetext>Created attachment 409441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691031</commentid>
    <comment_count>50</comment_count>
      <attachid>409450</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-22 22:31:39 -0700</bug_when>
    <thetext>Created attachment 409450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691139</commentid>
    <comment_count>51</comment_count>
      <attachid>409480</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-23 09:31:17 -0700</bug_when>
    <thetext>Created attachment 409480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691141</commentid>
    <comment_count>52</comment_count>
      <attachid>409480</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-23 09:33:52 -0700</bug_when>
    <thetext>Comment on attachment 409480
Patch

Thank you very much for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691164</commentid>
    <comment_count>53</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-23 10:19:42 -0700</bug_when>
    <thetext>Committed r267489: &lt;https://trac.webkit.org/changeset/267489&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409480.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691166</commentid>
    <comment_count>54</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-23 10:20:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/69443132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709247</commentid>
    <comment_count>55</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-19 13:04:49 -0800</bug_when>
    <thetext>*** Bug 214421 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709257</commentid>
    <comment_count>56</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-19 13:10:01 -0800</bug_when>
    <thetext>*** Bug 212784 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402297</attachid>
            <date>2020-06-19 11:21:26 -0700</date>
            <delta_ts>2020-07-10 12:22:28 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>put_private_name.diff</filename>
            <type>text/plain</type>
            <size>33525</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IDA4YWVhZTlmN2NlOS4uMzdkMWQ3Mzc3YjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTU3Myw2ICs1NzMsMjAgQEAgb3AgOmdldF9w
cml2YXRlX25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKICAg
ICB9CiAKK29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFn
cywKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1
Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgICAg
ICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQs
CisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZp
cnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGNlNDcwYzkyMmU4OC4uNjIzYjc4Y2JlNDBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAg
LTIxNSw2ICsyMTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmly
dHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVt
ZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlW
YWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJv
cGVydHkpCisgICAgVVNFUyhPcFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUp
CiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlk
ZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhP
cEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC0zNTMsNiArMzU0LDcgQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgorICAgIGNh
c2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9maWVsZDoK
ICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCA5MTgwNWM0Mjc4MmUuLjA1ZjFhMDhhMDM2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOCw2ICs1MDgsNyBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmls
ZSkKICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0
UHJpdmF0ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBw
cm9maWxlKQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTM5
LDYgKzU0MCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTksoT3BJbkJ5
VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAgICAgICAgIExJTksoT3BQdXRCeVZhbERp
cmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVOYW1lKQogCiAgICAgICAgIExJTksoT3BO
ZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5V2l0aFNpemUpCkBAIC0xMTE0LDYgKzEx
MTYsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgICAgICAgICBpZiAodm0u
aGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
ICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1l
dGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQocHJvcGVydHkpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFy
a2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5i
YXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xMjgwLDYgKzEzMDEsMjIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJ
bmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVh
cigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJp
dmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgp
OworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAg
ICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQocHJvcGVydHkpKQorICAg
ICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3Nl
T1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0ZV9uYW1lIHRyYW5zaXRpb24uIik7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJl
SUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAg
ICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggZTY0NmQwNGFiOTM5Li5kY2ZiYjAxMDEzYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0yNzM2LDEzICsyNzM2LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkK
IHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsK
KyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwg
UHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJh
c2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxk
KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFN
b2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA4ODRjODY3MDM5ODMuLjdhYTE3ZjRjYWNj
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMjkyLDYgKzI5Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9z
dXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAg
Y2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToK
ICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRj
aF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBz
dHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCA2MDA1Y2Q0ZTUyMmQuLmQ0ZTlhODk5NmRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtNDI3LDYgKzQyNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3Zh
bCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRl
cl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpA
QCAtNTkwLDYgKzU5MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlf
dmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9z
dWIpCkBAIC05MDcsNyArOTA5LDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAg
ICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCku
aXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1w
ID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7
CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZh
bENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1
bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBp
ZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBi
YWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAgICAgICAgICAgIGF1
dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRp
b25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFy
Z2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRh
cmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjY2ZTBlZDRjOGEwLi44MTE2ODgw
NjNiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNjAzLDYgKzYwMyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Myw2ICs2ODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lk
IGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3Vi
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGQ1M2U2OTc3ZDM5ZC4uYzYwYWJkZmU4YTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNzA0LDYgKzcwNCwx
MiBAQCBBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVj
dD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKICAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgp
OwogfQogCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKK3sKKyAgICByZXR1cm4gRUNNQU1v
ZGU6OnN0cmljdCgpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKQogewpAQCAtNzExLDcgKzcx
Nyw3IEBAIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5k
KE9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlW
YWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpw
cml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUg
b3ApCiB7CiAgICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYmMz
Y2NjODAyMzVkLi42MWY1MzkyZTliMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMTEwNSw3ICsxMTA1LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGUKICAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLQogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC0xMTE5LDYgKzExMTgsMTQwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBk
aXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlw
dCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCisvLyBGSVhNRTogV2Ugc2hvdWxk
IHBhc3MgUHJpdmF0ZU5hbWVNb2RlIGFzIHBhcmFtZXRlciBvZiBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZQorCitlbnVtIGNsYXNzIFByaXZhdGVOYW1lTW9kZSB7CisgICAgRGVmaW5lLAorICAgIFNl
dAorfTsKKworc3RhdGljIHZvaWQgSklUX09QRVJBVElPTiBwdXRQcml2YXRlTmFtZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2Ny
aXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQ
cml2YXRlTmFtZU1vZGUgcHJpdmF0ZU5hbWVNb2RlLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAg
IEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgT3B0aW1p
emF0aW9uUmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90
T3B0aW1pemVkOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAgICAg
ICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJh
bWUtPmJ5dGVjb2RlSW5kZXgoKSAhPSBCeXRlY29kZUluZGV4KDApKTsKKyAgICAgICAgICAgIEFT
U0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CisgICAgICAgICAgICBpZiAoYnlWYWxJbmZv
LT5zZWVuKSB7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkg
PT0gcHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5
VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5m
bywgcmV0dXJuQWRkcmVzcywgRGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAg
ICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRp
bWl6ZWQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
U2VlbSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1
bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0
OjpTZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0aCBtb3JlIHRoYW4g
MTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQorICAgICAgICAvLyBu
ZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdv
cnRoIG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhl
IHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAgICAvLyBXZSBjb3Vu
dCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZlVXAuCisgICAgICAg
IGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAgICAgICAgIG9wdGlt
aXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgIH0KKworICAg
IGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsK
KyAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAgICAgIGJ5VmFsSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKHJldHVybkFkZHJlc3MsIHByaXZhdGVOYW1lTW9kZSA9PSBQcml2YXRlTmFtZU1vZGU6OkRl
ZmluZSA/ICBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQ
cml2YXRlTmFtZUdlbmVyaWMpOworICAgIH0KKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBv
bmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNs
YXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGF1dG8gYmFzZU9iamVj
dCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9i
amVjdCwgdHJ1ZSk7CisgICAgaWYgKHByaXZhdGVOYW1lTW9kZSA9PSBQcml2YXRlTmFtZU1vZGU6
OkRlZmluZSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNl
T2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1l
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgcHV0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCB2bSwgY2Fs
bEZyYW1lLCBlbmNvZGVkQmFzZVZhbHVlLCBlbmNvZGVkU3Vic2NyaXB0LCBlbmNvZGVkVmFsdWUs
IGJ5VmFsSW5mbywgUHJpdmF0ZU5hbWVNb2RlOjpTZXQsIFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQ
cml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIHB1dFByaXZhdGVOYW1lKGdsb2JhbE9iamVj
dCwgdm0sIGNhbGxGcmFtZSwgZW5jb2RlZEJhc2VWYWx1ZSwgZW5jb2RlZFN1YnNjcmlwdCwgZW5j
b2RlZFZhbHVlLCBieVZhbEluZm8sIFByaXZhdGVOYW1lTW9kZTo6RGVmaW5lLCBSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUykpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAvLyBQcml2YXRlIGZp
ZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAg
IC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBhdXRv
IGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIHRydWUpOworICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJz
Y3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8s
IEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBz
dWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxk
cyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8v
IGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBhdXRvIGJh
c2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VPYmplY3QsIHRydWUpOworICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggNGMyMjA1MzBhYjRkLi4yNjI2NTJlYWEzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xOTMsMTAgKzE5MywxNCBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRl
RmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJf
dCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQ
cml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFs
SW5mbyopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkg
V1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5B
TDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKENh
bGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRl
eCA4NjhhMWQxMDU5MDkuLjQ5Y2UxZDhhMDgyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTMyOCw2ICszMjgsNDMgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5
VmFsSW5mbygpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisgICAgUGF0Y2hh
YmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShm
YXN0UGF0aEptcCk7CisgICAgCisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CisgICAgCisgICAg
Ly8gRklYTUU6IEFkZCBhIG5ldyBjb25zdHJ1Y3RvciBmb3IgQnlWYWxDb21waWxhdGlvbkluZm8K
KyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhi
eVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIFBhdGNoYWJsZUp1bXAoKSwg
SklUQXJyYXlNb2RlOjpKSVRJbnQzMiwgbnVsbHB0ciwgZG9uZSwgZG9uZSkpOworfQorCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0
ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25J
bmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CisKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCByZWdUMSk7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMik7CisgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkgPyBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZSA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIs
IGJ5VmFsSW5mbyk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwor
ICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1
dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlckJ5
SWQ+KCk7CkBAIC0xNDI4LDcgKzE0NjUsNyBAQCB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBDb25jdXJyZW50SlNMbwogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhD
YWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQog
ewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1
dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJlY3QgJiYgT3A6Om9wY29kZUlE
ID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIChP
cDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwgT3A6Om9wY29kZUlEID09IG9w
X3B1dF9wcml2YXRlX25hbWUgKSkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYmIE9wOjpvcGNv
ZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5
dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wPigpOwogCkBAIC0xNDU1LDEzICsxNDkyLDE4IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5B
ZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVy
dHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBE
aXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEo
KSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkp
OwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAorICAgIGF1dG8g
Z2VuZXJpY0Z1bmN0aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgaWYgY29uc3RleHBy
IChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgZ2VuZXJpY0Z1
bmN0aW9uID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpID8gb3BlcmF0aW9u
RGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmlj
OworCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
Q2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9Q
dHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRL
aW5kID09IERpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlv
blB1dEJ5VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2Rl
TG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihnZW5lcmljRnVuY3Rp
b24pKTsKIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIg
dHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAotLy8gc28gd2UgbGlzdCBvZmYg
dGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KKy8vIHNvIHdlIGxp
c3Qgb2ZmIHRoZSB0aHJlZSBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRl
bXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0
QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlk
ZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRo
Q2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwg
UHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7Cit0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPihCeVZhbEluZm8q
LCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAogSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYTI4MjMyZTcwMmY3Li4yMjNiNmI1
NjdkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0xNzEyLDYgKzE3MTIsNDkgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cp
CisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
KHNpemUsIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0
MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJ
RFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1
dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVT
bG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3Qg
YmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFk
YXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1
cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3Rv
cmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVy
YW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxv
YWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMg
UmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RU
cmFuc2l0aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdo
aWNoIGhvbGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1f
YmFzZSwgbV92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3Bh
dGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwg
b3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKICAgICAgICAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCBmZGFjZTcyY2JmNTcuLjc1NTIwZDIwYWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzMzLDYgKzEzMzMsMTA0IEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRV
Uk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7
CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAg
IEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+
KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFs
dWUoKTsKKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncy5p
c1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSAm
JiBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0
LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKwor
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUg
ZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisg
ICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGF1
dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZU9iamVjdCwgdHJ1ZSk7CisgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2
YXRlRmllbGRBZGQoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJh
c2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwg
c2xvdCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBi
YXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAg
ICAgICYmIHN1YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUq
IGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKTsKKyAgICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsK
KworICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90
byhhLCBiKSkgeworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5
UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVj
dGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5y
YXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0
cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0
YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1f
cHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFz
ZUNlbGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJl
LT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNl
KCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5l
d1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFu
ZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVy
ZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3Rv
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6
ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFp
biAmJiAhc2F3UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJ
RCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0
byBkaXNhYmxlIGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24g
dGhlbiBzdG9yZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcK
KyAgICAgICAgICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYg
d2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0
byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFj
ZSBJQyBkb2VzIG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNl
IHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAg
ICAgICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xv
dC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQo
KTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwg
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgRU5EKCk7ICAgIAorfQorCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NTM4YTU1
NWIyNWUuLmY5MTQ0MWFhYmQxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3Niw2ICsyNzYsNyBAQCBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1
dF9wcml2YXRlX25hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJv
dG90eXBlX29mKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0
aF90aGlzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403988</attachid>
            <date>2020-07-10 12:22:28 -0700</date>
            <delta_ts>2020-07-14 11:55:21 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>put_private_name.diff</filename>
            <type>text/plain</type>
            <size>72281</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMjU5MTA4NmViYWMuLmRiYjU2
MzExY2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQxLDcgKzU0
MSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
Ynl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAg
ICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAog
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
aAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NjYsNiArOTY1LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL09wdGlv
bnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaAor
ICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2YXRlTmFt
ZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9taXNl
VGltZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2Q3NGMyNTIyZWEuLmJh
OGNkMTZlMWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTIsNyArMTI1
Miw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYz
IC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAx
NTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0
ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAv
KiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZBMzc1
OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2MSw2ICsxMjYwLDcgQEAKIAkJODZBREQxNDUw
RkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJN
djdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVB
OTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2Qjg2
OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNz
ZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VF
MDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00MTIwLDggKzQxMjAsNiBAQAogCQk4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNw
cDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBh
dHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2NDUwQjAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgw
RjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRo
ID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxNDEsNiArNDEzOSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8q
IFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0MkEx
NDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzMwLDYgKzc3MzAsOCBAQAogCQkJCUNFMjdB
M0Q1MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dC5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAq
LywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5o
ICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5k
LmggKi8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtp
bmQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTg0MTQsOCArODQxNiw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVG
M0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0Yg
LyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAv
KiBQdXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0
QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5k
LmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMu
Y3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2Vz
LmggKi8sCkBAIC05MjM3LDYgKzkyMzcsNyBAQAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3
QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNB
OTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRL
aW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29t
cGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEYxMUU4MjA5QkNEQUIwMDcw
OTY1NCAvKiBDb21waWxlclRpbWluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEy
QTFGQUZBODVGMDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDE2Nyw3ICsxMDE2OCw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1
dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgy
MzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEzNGE2
NjUuLjUxY2M1MzU3NTM4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4LDcg
KzI2OCw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRC
eUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJ
ZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKQEAgLTkzMSw2ICs5MzAsNyBAQCBydW50aW1lL09iamVjdFRvU3Ry
aW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNw
cAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCiBydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCmluZGV4IDI4MGE4MmU4Yzc5Yy4uYjFiMmIwYTg4ZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ2LDEw
ICs0NiwxMCBAQCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAogICAgIDpSZXN1bHRU
eXBlLAogICAgIDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVsZFB1dEtpbmQsCiAgICAg
OlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKICAgICA6UHV0
QnlJZEZsYWdzLAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlwZSwKICAgICA6
U3RydWN0dXJlLAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3Myw2ICs1NzMsMjAgQEAgb3AgOmdl
dF9wcml2YXRlX25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwK
ICAgICB9CiAKK29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFz
ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwdXRLaW5kOiBQcml2YXRl
RmllbGRQdXRLaW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xkU3RydWN0
dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2Vs
bF0sCisgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBT
dHJ1Y3R1cmVJRCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAg
ICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTk4LDcgKzYxMiw3IEBAIG9wIDpwdXRfYnlf
dmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9w
ZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2Rl
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcAppbmRleCA3MzY2Y2I0MGI2OTkuLmZjZGU0MDQ5Y2Q0NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMjYsNiAr
MjI2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvckdl
bmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQor
ICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQogICAgIFVT
RVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5z
dGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5j
ZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk0LDYgKzM5NSw3IEBAIHZvaWQgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1
dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1
dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2Fz
ZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMTE2ODI5YTUxOTAxLi4yYTVhNDFhMmIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywg
cHJvZmlsZSkKICAgICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUpCiAgICAg
ICAgIExJTksoT3BHZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFByaXZhdGVO
YW1lLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJvZmlsZSkK
ICAgICAgICAgTElOSyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKQEAgLTU0MCw2ICs1NDEs
NyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAg
ICAgICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisg
ICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkp
CiAgICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEyOCw2ICsxMTMwLDI1IEBA
IHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNN
YXJrZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRV
bmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRh
dGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYg
KCFvbGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5t
X3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAg
ICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
b2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5l
d1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRT
dHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MTI5NCw2ICsxMzE1LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2Fj
aGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAg
ICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1l
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAg
ICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAg
ICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAg
JiYgKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAg
ICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2xlYXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5t
X29mZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisK
ICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZt
LmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTIuLmUwNWEyNTY0OGExMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yOSw5ICsyOSw5IEBACiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIk9w
Y29kZVNpemUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNp
bmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1
ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCkBAIC0yNTgsNDYgKzI1OCw2IEBAIHN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4g
ewogICAgIH0KIH07CiAKLXRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFB1
dEJ5VmFsRmxhZ3MsIHNpemU+IHsKLSAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlw
ZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwotCi0gICAgLy8gUHV0QnlWYWxGbGFncyBpcyAy
IGJvb2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29kZWQgYXM6Ci0gICAgLy8gICAgICAgICAg
aXNTdHJpY3QKLSAgICAvLyAgICAgICAgICAgICB2Ci0gICAgLy8gICAgIDAwMDB8MDB8MHwwIDwg
aXNEaXJlY3QKLSAgICAvLyAgICAgICAgICAgXgotICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lz
U3RyaWN0Qml0ID0gMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRNYXNrID0gMTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmll
bGRBY2Nlc3NLaW5kU2hpZnQgPSAyOwotCi0gICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxG
bGFncykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBU
YXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBmbGFncykKLSAgICB7Ci0gICAgICAgIGF1
dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKLSAg
ICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7Ci0gICAg
ICAgIHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQotICAgIHsKLSAgICAg
ICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQp
OwotICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0
cmljdEJpdCk7Ci0gICAgICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxk
QWNjZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKLSAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3Ry
aWN0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgICAgICBy
ZXR1cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPwotICAgICAgICAg
ICAgaXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0
QnlWYWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6Ci0gICAgICAgICAgICBhY2Nlc3MgPT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0
ZUZpZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVs
ZChlY21hTW9kZSk7Ci0gICAgfQotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6
ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkg
IT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVi
bGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJh
c2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtNDI3LDQgKzM4
NywyNCBAQCBzdHJ1Y3QgRml0czxFQ01BTW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90
LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0
IEZpdHM8UHJpdmF0ZUZpZWxkUHV0S2luZCwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBz
aXplPiB7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0
aWMgYm9vbCBjaGVjayhQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gQmFzZTo6Y2hlY2socHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KFByaXZhdGVGaWVsZFB1dEtpbmQg
cHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0KHB1dE1vZGUudmFs
dWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIFByaXZhdGVGaWVsZFB1dEtpbmQgY29udmVydCh0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChwdXRNb2RlKSk7Cisg
ICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ4ZTkwZmQwN2QwZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0g
ICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0g
ICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZh
dGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0
Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgIG91dC5wcmlu
dChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFiMzZjLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFQ01BTW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNs
YXNzIFB1dEJ5VmFsRmxhZ3MgewotcHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlW
YWxGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0
IHB1dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNr
aW5nIGlmIHRoZQotICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsK
LSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5l
UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZh
dGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQot
ICAgIGJvb2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNN
QU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kOjpQdXQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0
ZTsgfQotCi1wcml2YXRlOgotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSkKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2Vz
cywgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFN
b2RlIG1fZWNtYU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNmYzNTczOGIzMTY4Li5mNTM1NjU1OTNiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCIKICNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZEV2
YWxDb2RlQmxvY2suaCIKQEAgLTI3MTIsNyArMjcxMyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZh
bHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0
QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgp
KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3MzYsMTMgKzI3MzcsMTMgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQq
IGJhc2UsIHVuc2lnbmVkIGkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywg
YmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRl
RmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFz
ZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUoKSk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBy
aXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChl
Y21hTW9kZSgpKSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9w
ZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggZjNmM2FmY2VjZTgxLi44ZWEwZTI0MDE0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MCw5ICs3MCw5IEBA
CiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGNvZGVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRTdGF0dXMuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVnRXhw
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJp
bmdDb25zdHJ1Y3Rvci5oIgpAQCAtMTI2NywxOCArMTI2Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgQnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAg
ICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lO
TElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0
IGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhC
eXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgp
OwpAQCAtODI2MCw3ICs4MjQ4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlW
YWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAgICAgICAgICAgIGhhbmRsZVB1
dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGVjbWFNb2RlKGJ5dGVjb2RlKSk7CisgICAg
ICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29kZS5t
X2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC04
MjcxLDcgKzgyNTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRl
Y29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2
ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxs
cHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6
OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJy
YXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVjbWFNb2RlKGJ5dGVjb2RlKSkpOworICAgICAgICBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5
VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1dEJ5VmFs
RGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0ZSwgc2lu
Y2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDkzNzZmMjNkYTkx
Yy4uZjg3NzY0YmIwNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yOTIsNiArMjkyLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1w
bGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRf
cHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAg
IGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qg
d2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBmYzQx
MWUzNjNjYTIuLmFhODhhOTdkYzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0Mzg0LDcgKzE0Mzg0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVl
UmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2lu
ZCwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IGNjMjZmOWE5NzYwZi4uNWFkOThmYjgyYzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MjE0LDcgKzQyMTQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sw
XS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3RE
aXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdl
bmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIK
aW5kZXggZDk2NTg1YjEwNTc3Li43MzE3MTAwOTZjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzksOSArMTM5LDkgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUg
Ikluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5j
bHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRl
ICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDE5NDk2YTk5YjE3NS4uMjUz
YTNkYTlhZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MjUsNiArNDI1LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkBAIC01ODUsNiArNTg2LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZGVsX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikKQEAgLTkwMCw3ICs5MDIsMTIgQEAgQ29t
cGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1w
ID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYg
KEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5v
dEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsK
LSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxD
b21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1w
OworICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1w
KS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1
dG8gZG9uZVRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8u
ZG9uZVRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsK
ICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCA2NjZlMGVkNGM4YTAuLmIxOTEzMTQ5YjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCkBAIC00MDYsNyArNDA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gRGV0
ZXJtaW5lcyB0aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4K
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZChPcCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmllciBj
aGVjayBoZWxwZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0
QnlWYWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwpAQCAtNjAzLDYgKzYw
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9w
UHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0
ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Myw2ICs2ODQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19pbmRleGVkX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCmluZGV4IDIzNjgzMDQ1ZjFmZC4uN2Y3ZTQ0OTViNjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApA
QCAtMTM2LDExICsxMzYsMTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21h
TW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJpdmF0
ZUZpZWxkUHV0S2luZChwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVz
ZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lk
IEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0
aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0S2lu
ZC5pc05vbmUoKSkgewogICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAgICAg
ICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAg
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKaW5kZXggNzMyOWQ2YjczODE0Li4yZGZmNWZkNDdhNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiSklU
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNpbmNsdWRlICJQdXRCeVZh
bEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0Lmgi
CiAKQEAgLTEzMSwxMiArMTMwLDEyIEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJs
aWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigp
CiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCi0gICAgICAgICwgbV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCisgICAg
ICAgICwgbV9wcml2YXRlRmllbGRQdXRLaW5kKFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSkK
ICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1
ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRQdXRLaW5k
KTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAg
ICAKQEAgLTE0NSw3ICsxNDQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1f
ZWNtYU1vZGU7CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBt
X3ByaXZhdGVGaWVsZFB1dEtpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IGQ1M2U2OTc3ZDM5ZC4uOTE1MjY2MGJmNGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAgQUxXQVlT
X0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQog
fQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQ
dXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgRUNNQU1v
ZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1lKQogewot
ICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpz
dHJpY3QoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRBY2Nlc3NL
aW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1dEtpbmQg
SklUOjpwcml2YXRlRmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpOb25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7
CiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBK
SVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERp
cmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVG
aWVsZFB1dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkKIHsKLSAg
ICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAgcmV0dXJu
IG9wLm1fcHV0S2luZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiYzNjY2M4MDIzNWQuLmM0NTI5ZDhh
MThmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0xMTA1LDcgKzExMDUsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVj
bWFNb2RlKTsKIH0KIAotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTExMTksNiArMTEx
OCwxMzEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2Jh
bE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZv
LCBlY21hTW9kZSk7CiB9CiAKKy8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBQcml2YXRlTmFtZU1v
ZGUgYXMgcGFyYW1ldGVyIG9mIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lCisKK2VudW0gY2xhc3Mg
UHJpdmF0ZU5hbWVNb2RlIHsKKyAgICBEZWZpbmUsCisgICAgU2V0Cit9OworCit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9w
ZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICBPcHRpbWl6YXRpb25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0
aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRpbWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChz
dWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSkgeworICAgICAg
ICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5kZXgo
MCkpOworICAgICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAg
ICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJ
bmZvLT5jYWNoZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgSklUOjpjb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRQcml2YXRlTmFtZT4odm0s
IGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVT
UyksIERpcmVjdCwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAgICAgICAgICAgICAgICAgIG9w
dGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZW0gbGlrZSBhIGdl
bmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jaywgc3Vi
c2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQg
JiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2UpIHsK
KyAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEwIHRpbWVzIHdpdGhv
dXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2ZXIgbWFrZSB0aGF0
IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZiBvcHBvcnR1
bml0eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBwdXRfcHJpdmF0ZV9u
YW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQgdXAgc2xvd1BhdGhD
b3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBpZiAoKytieVZhbElu
Zm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQg
PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0
aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CisgICAgICAgIC8vIERv
bid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0
aCA9IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNEZWZpbmUoKSA/ICBvcGVyYXRp
b25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVy
aWMpOworICAgIH0KKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2Vk
IHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJl
IGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1
ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtp
bmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAg
ICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZh
dGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkg
YmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3Mg
bWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmlj
dE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAg
ICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKworICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30K
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0
aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3
YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOwor
ICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5k
ZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKKworICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDRjMjIwNTMwYWI0ZC4uM2Y0YWFhNTk5YjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjgsNyArMjgsOSBA
QAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJKSVRNYXRoSUNGb3J3YXJkcy5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aFJldHVyblR5
cGUuaCIKKwogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Vu
aXF1ZWRTdHJpbmdJbXBsLmg+CiAKQEAgLTE5MywxMCArMTk1LDEzIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNH
bG9iYWxPYmplCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90
KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmll
bGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2Fs
bChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
aW5kZXggN2UwOTQ0MjA5MjI1Li5jNzM0NjY5ZTZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5o
IgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTI3NSw3ICsyNzYsNyBAQCBKSVRQ
dXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2Rl
LCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZh
dGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJy
aWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdy
aXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpA
QCAtMzA1LDcgKzMwNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9
IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOworICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1f
ZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTMyOCw2ICszMjksNDQg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsr
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxv
Y2stPmFkZEJ5VmFsSW5mbygpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBy
ZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisg
ICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRT
bG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgCisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7Cisg
ICAgCisgICAgLy8gRklYTUU6IEFkZCBhIG5ldyBjb25zdHJ1Y3RvciBmb3IgQnlWYWxDb21waWxh
dGlvbkluZm8KKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0
aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIFBhdGNoYWJs
ZUp1bXAoKSwgSklUQXJyYXlNb2RlOjpKSVRJbnQzMiwgbnVsbHB0ciwgZG9uZSwgZG9uZSkpOwor
fQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
UHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgcmVnVDApOworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcmVnVDEpOworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgcmVnVDIpOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIHJl
Z1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFy
Z2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9u
SW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTY1OSw3ICs2OTgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwK
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBl
Y21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3QgPyBEaXJl
Y3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAgICAKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKQEAgLTEzMTcsNyArMTM1Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwK
IAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAot
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmll
bGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwog
CkBAIC0xNDI4LDcgKzE0NjcsNyBAQCB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBDb25jdXJyZW50SlNMbwogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQ
dXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogewotICAg
IEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92
YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJlY3QgJiYgT3A6Om9wY29kZUlEID09IG9w
X3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIChPcDo6b3Bj
b2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwgT3A6Om9wY29kZUlEID09IG9wX3B1dF9w
cml2YXRlX25hbWUgKSkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9
PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2Rl
SW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwogCkBAIC0xNDUwLDE4ICsxNDg5LDMyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
CiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1ZmZlciwgcGF0Y2hCdWZmZXIpOwogCisg
ICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25zdGV4cHIKKyAgICB7CisgICAgICAgIGlmIChP
cDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpCisgICAgICAgICAgICByZXR1cm4g
InB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRf
cHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICJwdXRfcHJpdmF0ZV9uYW1lIjsKKyAg
ICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9OworCiAgICAgYnlWYWxJbmZvLT5zdHVi
Um91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1fY29kZUJsb2NrLCBw
YXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICJCYXNlbGluZSBwdXRf
YnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3Bl
cnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0
YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAiQmFzZWxpbmUgJXMgd2l0aCBj
YWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBv
cGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOwogICAgIGJ5VmFs
SW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAorICAgIGF1dG8gZ2VuZXJpY0Z1bmN0
aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMg
OiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgaWYgY29uc3RleHByIChPcDo6b3Bjb2Rl
SUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgZ2VuZXJpY0Z1bmN0aW9uID0gYnl0
ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdl
bmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNh
bGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVz
cykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gRGlyZWN0ID8gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7
CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlvbikpOwogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28gd2UgbGlzdCBvZmYgdGhlIHRocmVlIGV4
cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwg
UmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFs
RGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0
aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIs
IFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2Li45Y2NlMWQ4MDAzOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAt
NjY0LDcgKzY2NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpLAotICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5l
Y21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmUpOworICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgp
LCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUo
KSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGM1MjNlOGE2MDA2ZC4uYjY2
YzczMDFlMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksOCArNTksOCBAQAogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtp
bmQuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDE2YWMxODAxOGIzNC4uMzE0ZTk5ZGMwZGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTExNzcsNDIgKzExNzcsMjAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
LSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0
cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdz
LmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29k
ZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNTRVJUKCFp
c1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4
KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0
SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAg
ICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsK
LSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRvdWJsZSBz
dWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwotICAgICAgICB1aW50MzJf
dCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0Rv
dWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQz
MiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAgICAgICAgYmFzZU9iamVj
dC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUs
IDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJ
bmRleFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOwotICAgICAgICB9
Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJl
dyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZh
dGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNT
dHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hv
dWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nl
c3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3Ry
aWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVs
ZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwg
cHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOyAgICAKLSAg
ICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3Ry
aWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZt
LCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCA4YjM5OGY1M2Y0ZjcuLmExNDc3MmQ2MTdmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTE3MTksNiArMTcxOSw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRl
X25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3Bh
dGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBP
cFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0
eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAub3BQ
dXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0
UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5l
cSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisK
KyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQz
CisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhp
cyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBj
dXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9w
UHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBi
dGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUs
IGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1
CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQw
CisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246CisgICAgIyBU
aGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2Uu
CisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwg
dDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0
NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKKyAg
ICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQorICAg
IGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNy
byBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAg
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBj
b250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGZkYWNlNzJjYmY1Ny4uODUx
NDI2ZTMyMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTEzMzMsNiArMTMzMywxMDUgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFs
dWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpKTsKIH0KIAorU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgQkVHSU4oKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV92YWx1ZSkuanNWYWx1ZSgpOworCisgICAgYXV0byBw
cm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1
ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSA6IG51bGxwdHI7
CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xh
c3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4g
c3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0
byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChieXRlY29kZS5tX3B1dEtp
bmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYmFzZU9iamVjdC0+
cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAg
ICB9CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNl
VmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAg
ICYmIHN1YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAg
ICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEg
PSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpO
ZXdQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKwor
ICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhh
LCBiKSkgeworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJv
dG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVk
IHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJl
RGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmlu
Z0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0
IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9v
bGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAg
ICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJv
cGVydHkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNl
VmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNl
bGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkp
IHsKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1By
b3BlcnR5KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdT
dHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9
PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxp
ZGF0ZWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAm
JiAhc2F3UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9s
ZFN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9
IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRo
aXMgYXNzZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBk
aXNhYmxlIGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhl
biBzdG9yZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAg
ICAgICAgICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2Ug
cmVpZnkgYSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBk
aXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJ
QyBkb2VzIG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5
cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAg
ICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAg
ICAgICBuZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5j
YWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29k
ZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgRU5EKCk7ICAgIAorfQorCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NTM4YTU1NWIy
NWUuLmY5MTQ0MWFhYmQxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3Niw2ICsyNzYsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X3ByaXZhdGVfbmFtZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9w
cml2YXRlX25hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJvdG90
eXBlX29mKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVG
aWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m
YTEyMzc3YTliMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgorCisjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIFByaXZhdGVGaWVs
ZFB1dEtpbmQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoaXNTZXQo
KSkKKyAgICAgICAgb3V0LnByaW50KCJTZXQiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmlu
dCgiRGVmaW5lIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWY1MWQ1OWM3NmQwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFBy
aW50U3RyZWFtOworfTsKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQ
dXRLaW5kIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IFNldCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
OF90IERlZmluZSA9IDI7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVG
aWVsZFB1dEtpbmQgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQ
dXRLaW5kKGJ5dGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5k
IG5vbmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVs
ZFB1dEtpbmQoU2V0KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBkZWZpbmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5v
bmU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlID09IFNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgPT0gRGVmaW5lOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJp
bnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxk
UHV0S2luZCh1aW50OF90IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgewor
ICAgICAgICBBU1NFUlQobV92YWx1ZSA9PSBTZXQgfHwgbV92YWx1ZSA9PSBEZWZpbmUsIG1fdmFs
dWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404260</attachid>
            <date>2020-07-14 11:55:21 -0700</date>
            <delta_ts>2020-07-15 14:26:10 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>put_private_name.diff</filename>
            <type>text/plain</type>
            <size>98704</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmYmRiOTlhNTZlYwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsx
LDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xh
cmF0aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQg
PSB0aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNb
ZHluYW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQor
CisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0
dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJv
cGVydHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0
ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi42MWNmZjY3YjdmMGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCwwICsxLDQyIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNm
aWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAw
MCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3Qn
OworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7
CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAnZm9vJyArIGkpOworfQorCisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMTYxMDky
ZjQyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNv
dW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiZWQ5NTQxYzA0YwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFs
dWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMjU5MTA4NmViYWMu
LmRiYjU2MzExY2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQx
LDcgKzU0MSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NjYsNiArOTY1LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJ
bnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2
YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Q
cm9taXNlVGltZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2Q3NGMyNTIy
ZWEuLmJhOGNkMTZlMWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTIs
NyArMTI1Miw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJB
MzM3MDBBOUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4
MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4
OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyog
UHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDEx
NTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVB
MUZBMzc1OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2MSw2ICsxMjYwLDcgQEAKIAkJODZB
REQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIg
LyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQz
MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjEx
QTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTIwLDggKzQxMjAsNiBAQAogCQk4NjcwNEI4
MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0
ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIv
WWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxG
bGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBG
QUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZs
YWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAw
QjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNDEsNiArNDEzOSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1N
YXBBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJy
YXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3
Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxk
UHV0S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cml2YXRlRmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZC
RjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1J
UFMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBT
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzMwLDYgKzc3MzAsOCBAQAogCQkJ
CUNFMjdBM0Q1MjM3NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJp
ZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5s
aW5lcy5oICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQ
dXRLaW5kLmggKi8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVs
ZFB1dEtpbmQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTg0MTQsOCArODQxNiw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RD
MTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAx
NzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3
OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQ
dXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3Rh
dHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0
YXR1c2VzLmggKi8sCkBAIC05MjM3LDYgKzkyMzcsNyBAQAogCQkJCUJDMThDM0YzMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYx
NUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmll
bGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAg
LyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEYxMUU4MjA5QkNE
QUIwMDcwOTY1NCAvKiBDb21waWxlclRpbWluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkRDRTEyQTFGQUZBODVGMDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDE2Nyw3ICsxMDE2OCw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQz
IC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAw
ODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThC
OTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3
NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlT
bG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUw
MmEzNGE2NjUuLjUxY2M1MzU3NTM4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAt
MjY4LDcgKzI2OCw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29k
ZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTkzMSw2ICs5MzAsNyBAQCBydW50aW1lL09iamVj
dFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVyYXRp
b25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0
aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDI4MGE4MmU4Yzc5Yy4uYjFiMmIwYTg4ZTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAg
LTQ2LDEwICs0NiwxMCBAQCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAogICAgIDpS
ZXN1bHRUeXBlLAogICAgIDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVsZFB1dEtpbmQs
CiAgICAgOlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKICAg
ICA6UHV0QnlJZEZsYWdzLAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlwZSwK
ICAgICA6U3RydWN0dXJlLAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3Myw2ICs1NzMsMjAgQEAg
b3AgOmdldF9wcml2YXRlX25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlND
ZWxsXSwKICAgICB9CiAKK29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwdXRLaW5kOiBQ
cml2YXRlRmllbGRQdXRLaW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xk
U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVy
W0pTQ2VsbF0sCisgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5ld1N0cnVjdHVy
ZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsK
ICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTk4LDcgKzYxMiw3IEBAIG9wIDpw
dXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNtYU1vZGU6IEVD
TUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBB
cnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcAppbmRleCA3MzY2Y2I0MGI2OTkuLmZjZGU0MDQ5Y2Q0NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0y
MjYsNiArMjI2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1
YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVy
YXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFs
LCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3Bl
cnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQog
ICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJ
bnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk0LDYgKzM5NSw3IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNl
IG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNl
IG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAg
ICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nl
c3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggMTE2ODI5YTUxOTAxLi4yYTVhNDFhMmIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3Vt
ZW50cywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUp
CiAgICAgICAgIExJTksoT3BHZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFBy
aXZhdGVOYW1lLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJv
ZmlsZSkKICAgICAgICAgTElOSyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKQEAgLTU0MCw2
ICs1NDEsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZh
bCkKICAgICAgICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJl
Y3QpCisgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3
QXJyYXkpCiAgICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEyOCw2ICsxMTMw
LDI1IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhl
YXAuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0g
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBu
ZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAg
ICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRh
ZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7
CisgICAgICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG5ld1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtl
ZChvbGRTdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTI5NCw2ICsxMzE1LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5s
aW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIo
KTsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZh
dGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBT
dHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7Cisg
ICAgICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsK
KyAgICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAg
ICAgICAgJiYgKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAg
ICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9T
UigpLCAiQ2xlYXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRh
ZGF0YS5tX29mZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlE
ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlE
IHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTIuLmUwNWEyNTY0
OGExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yOSw5ICsyOSw5
IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1
ZGUgIk9wY29kZVNpemUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5j
bHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3Mu
aCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgog
I2luY2x1ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJl
Z2lzdGVyLmgiCkBAIC0yNTgsNDYgKzI1OCw2IEBAIHN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywg
c2l6ZT4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBG
aXRzPFB1dEJ5VmFsRmxhZ3MsIHNpemU+IHsKLSAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5h
bWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwotCi0gICAgLy8gUHV0QnlWYWxGbGFn
cyBpcyAyIGJvb2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29kZWQgYXM6Ci0gICAgLy8gICAg
ICAgICAgaXNTdHJpY3QKLSAgICAvLyAgICAgICAgICAgICB2Ci0gICAgLy8gICAgIDAwMDB8MDB8
MHwwIDwgaXNEaXJlY3QKLSAgICAvLyAgICAgICAgICAgXgotICAgIC8vICAgIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KLSAgICBzdGF0aWMg
Y29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKLSAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBzX2lzU3RyaWN0Qml0ID0gMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmRNYXNrID0gMTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2
YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQgPSAyOwotCi0gICAgc3RhdGljIGJvb2wgY2hlY2soUHV0
QnlWYWxGbGFncykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0
YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBmbGFncykKLSAgICB7Ci0gICAg
ICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgp
KTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7
Ci0gICAgICAgIHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQotICAgIHsK
LSAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJl
Y3RCaXQpOwotICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYg
c19pc1N0cmljdEJpdCk7Ci0gICAgICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0
ZUZpZWxkQWNjZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+
IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKLSAgICAgICAgYXV0byBlY21hTW9kZSA9
IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAg
ICAgICByZXR1cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPwotICAg
ICAgICAgICAgaXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUp
IDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6Ci0gICAgICAgICAgICBhY2Nlc3Mg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0
UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZh
dGVGaWVsZChlY21hTW9kZSk7Ci0gICAgfQotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bj
b2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXpl
b2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+
IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVz
aW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtNDI3
LDQgKzM4NywyNCBAQCBzdHJ1Y3QgRml0czxFQ01BTW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1
aW50OF90LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgor
c3RydWN0IEZpdHM8UHJpdmF0ZUZpZWxkUHV0S2luZCwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50
OF90LCBzaXplPiB7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAg
ICBzdGF0aWMgYm9vbCBjaGVjayhQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgewor
ICAgICAgICByZXR1cm4gQmFzZTo6Y2hlY2socHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0KHB1dE1v
ZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIFByaXZhdGVGaWVsZFB1dEtpbmQgY29u
dmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHB1dE1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChwdXRNb2Rl
KSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3Mp
Ci17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdzLmlzRGlyZWN0
KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIpOwotICAgIGlmIChmbGFncy5p
c1ByaXZhdGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmll
bGQrUHV0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgIG91
dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFiMzZjLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFQ01BTW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlE
VGFibGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07
Ci0KLWNsYXNzIFB1dEJ5VmFsRmxhZ3MgewotcHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMg
UHV0QnlWYWxGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gUHV0QnlWYWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEg
ZGlyZWN0IHB1dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0
IGNoZWNraW5nIGlmIHRoZQotICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0g
ICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBl
Y21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFN
b2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9k
ZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1
dFByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQ
dXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAg
IH0KLQotICAgIGJvb2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0g
ICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAg
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVs
ZEFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpQdXQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
OkNyZWF0ZTsgfQotCi1wcml2YXRlOgotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9v
bCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0Rp
cmVjdCkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZSkKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5k
IGFjY2VzcywgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQot
ICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0Owot
ICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAg
IEVDTUFNb2RlIG1fZWNtYU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNw
YWNlIFdURiB7Ci0KLWNsYXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggNmYzNTczOGIzMTY4Li5mNTM1NjU1OTNiZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IuaCIKICNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxp
bmtlZEV2YWxDb2RlQmxvY2suaCIKQEAgLTI3MTIsNyArMjcxMyw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkpOworICAg
IE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21h
TW9kZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3MzYsMTMgKzI3MzcsMTMgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUoKSk7
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlz
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVG
aWVsZChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAwNThjN2MyNjZlZDYuLmNlY2I3
ZmVmZmFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDA3MSw2ICs0MDcxLDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlk
V2l0aFRoaXM6CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmM2YzYWZjZWNlODEuLmFiNjg1
MWRmYzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTcwLDkgKzcwLDkgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdl
dHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJ
ZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFs
RmxhZ3MuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0Fs
aWdubWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0xMjY3LDE4ICsx
MjY3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNl
IH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFNb2RlIGVjbWFNb2Rl
KEJ5dGVjb2RlIGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOwot
fQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlW
YWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVj
b2RlLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0KLQogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6
OmFsbG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsK
ICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC02MDQ3LDYgKzYwMzUsNjEgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUqIHBy
b3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVkQXNQ
dXRCeUlkID0gZmFsc2U7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKKyAgICAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdl
dChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJ
bmZvOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMg
bm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwu
CisgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3Jt
YXRpb24uCisgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgYnlWYWxJbmZvLT5zdHViSW5mbworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29u
c3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNQdXRCeUlk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8t
PmNhY2hlZElkOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciA9IG1f
Z3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFs
dWUqIGZyb3plbiA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWRlbnRp
Zmllci5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm96ZW4gPSBtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCF1aWQtPmlzU3ltYm9sKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgcHV0
QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1
YkluZm8sIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBib29sIGlz
RGlyZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCisg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBuZXh0T3Bjb2RlSW5k
ZXgoKSwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFjb21waWxlZEFzUHV0QnlJZCkKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFBy
aXZhdGVOYW1lLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURh
dGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKQEAgLTgyNjAsNyArODMwMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5k
bGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOwor
ICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNv
ZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpA
QCAtODI3MSw3ICs4MzE0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwo
Qnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8g
TGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
bnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAg
ICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQ
dXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2Vj
bWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRC
eVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUs
IHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5Mzc2ZjIz
ZGE5MWMuLmY4Nzc2NGJiMDY4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBJCiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJf
c2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3Bf
cHV0X3ByaXZhdGVfbmFtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAK
ICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMGRkZmQ1NDEzMTg0
Li44NGJjMTgwMzU2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC02NjUsNiArNjY1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNl
IFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNl
IFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZp
bmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNh
c2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRl
eCBlZTU4NzE0ZjUzZWIuLmIxM2QwZWJjZmFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQ
dXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgY2FzZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggNGY5NmYyMDBlMWM4Li41YzdmNDI4ZDNiYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjc0Nyw2ICsyNzQ3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6
CiAgICAgICAgIGNhc2UgVHlwZU9mOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAg
ICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlz
OgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IGRkMGQxMmRhZjhkOS4uNzg0ZTljZDhlZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRWYXJp
YW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50
LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24u
aCIKQEAgLTIyODUsNiArMjI4NiwyNCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAg
CisgICAgYm9vbCBoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIGlmIChv
cCgpID09IFB1dFByaXZhdGVOYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVG
aWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1ByaXZhdGVGaWVsZFB1dEtp
bmQoKSk7CisgICAgICAgIGlmIChvcCgpID09IFB1dFByaXZhdGVOYW1lKSB7CisgICAgICAgICAg
ICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhf
dD4oKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUoKTsK
KyAgICB9CisKICAgICBib29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2YWM1
OWQ3Y2FkN2UuLmY0ZDFiZGQ5ZTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjA5LDYgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNW
YXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlSGFzVmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
R2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdlLi40MzM1MjY1OWIyYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJERkdSZWdpc3RlcmVk
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiSGVhcENlbGwuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxF
KERGR19KSVQpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBPcEluZm8gewogICAgIGV4cGxpY2l0
IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3AuYXNCaXRzKCkpIHsgfQogICAgIGV4cGxp
Y2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1ZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRzKCkpKSB7IH0KICAgICBleHBsaWNp
dCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7
IH0KKyAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSA6IG1f
dmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCA1OGZkYTliMzI3MDcuLjc0NzJhMDk3ZWEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNzA5LDYgKzE3
MDksNTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVy
dHlTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBkZWZpbmVBY2Nlc3NvclByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHkt
PnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CiB9CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZURlZmluZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFByb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdp
dGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFs
d2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsK
KyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+
ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZVNldChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJl
IGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1l
dGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RN
b2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAg
YmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7Cit9CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwg
dm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGEz
OGM2ZGRjOWEzNi4uZDkwMTJlZGQxMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaApAQCAtMTY5LDYgKzE2OSw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBF
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmlu
ZyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2Jq
ZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHlTeW1ib2woSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFN5bWJvbCosIEpTT2Jq
ZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVEZWZpbmUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVTZXQoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVz
aChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJy
YXlQdXNoTXVsdGlwbGUoSlNHbG9iYWxPYmplY3QqLCBKU0FycmF5Kiwgdm9pZCogYnVmZmVyLCBp
bnQzMl90IGVsZW1lbnRDb3VudCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUg
dmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IGY3ZGJjMGM0ODE4Ny4uN2U0YzEwNTJhMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
MTM3Myw2ICsxMzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlz
OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFy
OgogICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1
bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDI2ZGEyYjc2OGZjYy4uMzYyY2E3MmU0NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI1LDYgKzUyNSw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0
R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZh
dGVOYW1lOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBmYzQxMWUzNjNjYTIuLmUzNDQ4
YTljNmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTM1MjEsNiArMzUyMSwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRl
TmFtZShOb2RlKiBub2RlKQoreworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygp
OworICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5VmFsdWUuanNWYWx1ZVJl
Z3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Cisg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKworICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCByZXVzZSBKSVRPcGVyYXRp
b25zLGggZnVuY3Rpb25zCisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5wcml2YXRlRmllbGRQdXRL
aW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lRGVmaW5lIDogb3BlcmF0
aW9uUHV0UHJpdmF0ZU5hbWVTZXQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQzODQsNyArMTQ0MDEsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2Rl
LCBwdXRLaW5kLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggNjYyNWQ2Mzk2YTVlLi41Y2UzODViMTI2ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEzNjAsNiAr
MTM2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3Ry
aW5nKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAg
ICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBFZGdlJiBjaGls
ZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZh
bFdpdGhUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1
dEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCA5OWE4Y2Q5MzkyZmIuLjFiZDI3MjQ4OGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yOTE5LDYgKzI5MTks
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBp
bGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxB
bGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDUyYTBhYzFlYWE4MC4uODFmZTVlZDg1MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTMsNiArMzkzLDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhU
aGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToK
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggY2MyNmY5YTk3NjBmLi5kYmVmMmMzYTczNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMTgsNiArMTAxOCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQdXRC
eVZhbFdpdGhUaGlzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKKyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXRvbWljc0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNz
QW5kOgogICAgICAgICBjYXNlIEF0b21pY3NDb21wYXJlRXhjaGFuZ2U6CkBAIC0zOTI2LDYgKzM5
MjksMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkp
OworCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5p
c0RlZmluZSgpID8gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVEZWZpbmUgOiBvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZVNldCwKKyAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJh
c2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQXRvbWljc1Jl
YWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpA
QCAtNDIxNCw3ICs0MjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVy
LCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGly
ZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0
IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3Ny4uNzMxNzEwMDk2Y2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5LDkgKzEzOSw5IEBAIG1v
ZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvbk1v
ZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVs
ZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJ
ZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0
YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAxOTQ5NmE5OWIxNzUuLjI1M2EzZGE5YWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg1LDYg
KzU4Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3Zh
bF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05
MDAsNyArOTAyLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgICAg
ICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4o
KTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkK
ICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hh
YmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAg
ICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBpZiAoSnVtcChw
YXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBiYWRUeXBlSnVt
cCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkp
OworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhv
dFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5l
eHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjY2ZTBlZDRjOGEwLi5iMTkxMzE0OWI1MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDA2LDcgKzQwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nl
c3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAg
ICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAg
ICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAg
ICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwu
CiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwg
UmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nh
c2VzKTsKQEAgLTYwMyw2ICs2MDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3Zh
bF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1
dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02ODMs
NiArNjg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3
X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9o
YXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAyMzY4MzA0NWYxZmQuLjdmN2U0NDk1
YjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDExIEBAIHZvaWQgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBK
SVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAog
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwg
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkK
ICAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKLSAg
ICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkK
KyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQocHJpdmF0ZUZpZWxkUHV0S2luZCkKIHsK
ICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwogfQpAQCAtMTUy
LDEwICsxNTIsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7Ci0gICAgaWYgKG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKSB7CisgICAgaWYgKCFt
X3ByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkpIHsKICAgICAgICAgQVNTRVJUKG1fcHV0S2lu
ZCA9PSBEaXJlY3QpOwogICAgICAgICBBU1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKLSAg
ICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kOjpDcmVhdGUpCisgICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUo
KSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDczMjlkNmI3MzgxNC4uMmRm
ZjVmZDQ3YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdp
bi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNs
dWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEzMCwxMiBAQCBjbGFzcyBKSVRQdXRC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmlj
dCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkUHV0S2luZChQcml2YXRlRmll
bGRQdXRLaW5kOjpub25lKCkpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAog
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
YmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9k
ZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwg
UHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsNyArMTQ0LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAg
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOworICAgIFBy
aXZhdGVGaWVsZFB1dEtpbmQgbV9wcml2YXRlRmllbGRQdXRLaW5kOwogfTsKIAogY2xhc3MgSklU
RGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBkNTNlNjk3N2QzOWQuLjkxNTI2
NjBiZjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5OSwy
MSArNjk5LDIxIEBAIEFMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5
SWQ+KE9wUHV0QnlJZCBvcCkKIH0KIAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9k
ZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitB
TFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4oT3BQ
dXRQcml2YXRlTmFtZSkKIHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworICAg
IHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApCitQ
cml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZChPcCkKIHsKLSAgICBy
ZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKKyAgICByZXR1cm4gUHJpdmF0ZUZp
ZWxkUHV0S2luZDo6bm9uZSgpOwogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxE
aXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZFB1
dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJp
dmF0ZU5hbWUgb3ApCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCgpOworICAgIHJldHVybiBvcC5tX3B1dEtpbmQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYmMz
Y2NjODAyMzVkLi5jNDUyOWQ4YTE4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMTEwNSw3ICsxMTA1LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGUKICAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLQogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC0xMTE5LDYgKzExMTgsMTMxIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBk
aXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlw
dCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCisvLyBGSVhNRTogV2Ugc2hvdWxk
IHBhc3MgUHJpdmF0ZU5hbWVNb2RlIGFzIHBhcmFtZXRlciBvZiBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZQorCitlbnVtIGNsYXNzIFByaXZhdGVOYW1lTW9kZSB7CisgICAgRGVmaW5lLAorICAgIFNl
dAorfTsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBw
dXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGlt
aXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOworCisgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVh
YmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAgICAgICBpZiAoc3Vic2NyaXB0Lmlz
U3ltYm9sKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPmJ5dGVjb2RlSW5kZXgo
KSAhPSBCeXRlY29kZUluZGV4KDApKTsKKyAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5z
dHViUm91dGluZSk7CisgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9w
UHV0UHJpdmF0ZU5hbWU+KHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpLCBEaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAg
ICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6
Ok9wdGltaXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAvLyBTZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVV
cDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5P
bmNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlv
blJlc3VsdDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25S
ZXN1bHQ6OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUg
dGhhbiAxMCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAg
IC8vIG5ldmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlv
bnMgd29ydGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhh
dCB0aGUgcHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdl
IGNvdW50IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAg
ICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAg
b3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQor
CisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVV
cCkgeworICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlW
YWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVy
bkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlz
RGVmaW5lKCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9u
U2V0UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBj
YW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFu
ZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29s
IGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1v
ZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRl
ZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIC8vIFByaXZh
dGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3Bl
CisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAg
IGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBieVZhbEluZm8tPnRvb2tT
bG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQ
cml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1v
ZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBv
bmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNs
YXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNT
dHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CisgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA0YzIyMDUzMGFiNGQu
LjNmNGFhYTU5OWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiSklUTWF0
aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVk
ZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCisKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCkBAIC0xOTMsMTAgKzE5NSwx
MyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVs
ZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDdlMDk0NDIwOTIyNS4uMmZhMTMxODE2ZDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBAIC0y
NzUsNyArMjc2LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBw
dXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTog
VXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8g
cmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsK
LSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNt
YU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3Qp
CkBAIC0zMjgsNiArMzI5LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZh
bEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5
VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFi
bGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVs
IGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgY29uc3RydWN0
b3IgZm9yIEJ5VmFsQ29tcGlsYXRpb25JbmZvCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5h
cHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZh
c3RQYXRoSm1wLCBQYXRjaGFibGVKdW1wKCksIEpJVEFycmF5TW9kZTo6SklUSW50MzIsIG51bGxw
dHIsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0u
YnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1f
cHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1Bh
dGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5k
LnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0
aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7Cisg
ICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJ
ZD4oKTsKQEAgLTY1OSw3ICs3MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/
IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwor
ICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQo
Ynl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzMTcsNyArMTM2MCw3IEBAIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNv
ZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUp
LCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQo
Ynl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNh
c2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xNDI4LDcgKzE0NzEsNyBAQCB0ZW1wbGF0ZSB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBDb25j
dXJyZW50SlNMbwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6Om9w
Y29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJlY3Qg
JiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtpbmQg
PT0gRGlyZWN0ICYmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwgT3A6
Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUgKSkgfHwgKHB1dEtpbmQgPT0gTm90RGly
ZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDUwLDE4ICsxNDkzLDMyIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1ZmZl
ciwgcGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25zdGV4cHIK
KyAgICB7CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Qp
CisgICAgICAgICAgICByZXR1cm4gInB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYgKE9w
OjpvcGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICJw
dXRfcHJpdmF0ZV9uYW1lIjsKKyAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9Owor
CiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAg
ICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0g
ICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAn
JXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8g
Il9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3Ry
aW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAg
ICAiQmFzZWxpbmUgJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLCBvcGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+dXRm
OCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNz
LnZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAor
ICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgaWYg
Y29uc3RleHByIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAg
Z2VuZXJpY0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRp
b25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVy
aWM7CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRl
eEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxO
b1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1
dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0
aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4o
cmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5j
dGlvbikpOwogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhl
ciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0IG9m
ZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28gd2Ug
bGlzdCBvZmYgdGhlIHRocmVlIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgog
dGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQ
dXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxl
SWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdp
dGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRy
LCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFsSW5m
byosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2Li4wNjc2OTRi
NzkyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9
IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVtcCBm
YXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEpt
cCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogQWRk
IGEgbmV3IGNvbnN0cnVjdG9yIGZvciBCeVZhbENvbXBpbGF0aW9uSW5mbworICAgIG1fYnlWYWxD
b21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9i
eXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgUGF0Y2hhYmxlSnVtcCgpLCBKSVRBcnJheU1vZGU6
OkpJVEludDMyLCBudWxscHRyLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxSZWdpc3Rl
ciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9
IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5m
bzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7
CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0gbGFi
ZWwoKTsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNW
YWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgdmFs
dWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdH
UFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcHJv
cGVydHlSZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0
TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRhZ0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRL
aW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3Ry
dWN0aW9uKTsKQEAgLTY2NCw3ICs3MDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVj
b2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxh
Z3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRQ
dXRLaW5kOjpub25lKCkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBjNTIz
ZThhNjAwNmQuLmI2NmM3MzAxZTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDggKzU5LDggQEAKICNp
bmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2
ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRl
ICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAxNmFjMTgwMThiMzQu
LjMxNGU5OWRjMGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC0xMTc3LDQyICsxMTc3LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJh
c2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0gYnl0
ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJpY3RN
b2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0gICAg
ICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9k
ZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRo
cm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlwdC5p
c0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwotICAg
ICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKLSAg
ICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
c3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vi
c2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNV
SW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93
IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9FTkQo
KTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYg
dG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQocHJv
cGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAgICAg
IGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXRE
aXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlzUHJp
dmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3Mu
aXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElOVF9F
TkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVj
dFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUs
IHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNmYxYThmNmJkZGIzLi5jNGQ0NGNi
YTA4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC01ODksNiArNTg5LDEzIEBAIG1hY3JvIHdyaXRl
QmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKICAgICAg
ICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6
ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdldChjZWxs
RmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmllck9uQ2Vs
bFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVyRG9uZToK
K2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxsRmllbGRO
YW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQpAQCAt
MTYyMCw2ICsxNjI3LDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFt
ZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2go
KQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUsIE9wUHV0
UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUp
CisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
c2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1f
cHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQz
LCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0
MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJ
RFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1
dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVT
bG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3Qg
YmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFk
YXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1
cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3Rv
cmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVy
YW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxv
YWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMg
UmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAub3BQdXRQ
cml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMg
VGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNl
LgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zm
c2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQy
LCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2Vu
ZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQ
b2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3Ry
dWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggOGIzOThmNTNmNGY3Li5hMTQ3NzJkNjE3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNzE5
LDYgKzE3MTksNDkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBP
cEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBl
bmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2
YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisg
ICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwg
dDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wUHV0UHJpdmF0
ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVO
YW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9h
ZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJp
bmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQs
IHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBz
dHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZh
dGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwg
Lm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1f
YmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAg
ICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAg
ICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9ubHkg
dGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAgIGdl
dChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MikK
KyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQor
ICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCisgICAgd3JpdGVC
YXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBkaXNwYXRj
aCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9w
V2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91
c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBmZGFjZTcyY2JmNTcuLjg1MTQyNmUzMjFj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC0xMzMzLDYgKzEzMzMsMTA1IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChn
bG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VU
X0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBH
RVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKKworICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxs
KCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOworCisgICAg
Ly8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGlj
YWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBt
b2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAoYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVm
aW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChi
eXRlY29kZS5tX3B1dEtpbmQuaXNTZXQoKSk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgfQorCisg
ICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYgYmFzZVZhbHVlLmlz
Q2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAgICAmJiBzdWJz
Y3JpcHQuaXNDZWxsKCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2Vz
QXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYg
KG9sZFN0cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAg
ICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVy
dHkpCisgICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsK
KyAgICAgICAgICAgICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hw
b2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHBy
b3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+cmFyZURhdGEoKS0+
c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0
YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGFydCBvdXQgYnkg
Y2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0
dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAgICAgIG1ldGFk
YXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LmNs
ZWFyKCk7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFz
Q2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1
Y3R1cmUodm0pOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVydHlB
Y2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkg
eworICAgICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3Ry
dWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChv
bGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4gJiYgIXNhd1Bv
bHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1
Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9w
ZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc2Vy
dCBoZWxwcyBjYXRjaCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQgdG8gZGlzYWJsZSBj
YWNoaW5nCisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9uIHRoZW4gc3RvcmUg
dG8gYW4gZXhpc3RpbmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25nCisgICAgICAgICAg
ICAgICAgLy8gcGF0aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElmIHdlIHJlaWZ5IGEg
bGF6eSBwcm9wZXJ0eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8gdG8gZGlzYWJsZSBj
YWNoaW5nLCB3ZSBtYXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxhY2UgSUMgZG9lcyBu
b3QKKyAgICAgICAgICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVzZSB0eXBlcyBvZiBz
dHJ1Y3R1cmUgdHJhbnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAv
LyB0cmFuc2l0aW9uIGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobmV3U3RydWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgbmV3
U3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywg
c3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIEVORCgpOyAgICAKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9wcml2YXRlX25hbWUpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNjUzOGE1NTViMjVlLi5mOTE0
NDFhYWJkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yNzYsNiArMjc2LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9i
eV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
dmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2
YXRlX25hbWUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9u
YW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3Byb3RvdHlwZV9vZik7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhZGZiNzlm
ZGRhODEuLjBmMzc1NmZkZmIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCkBAIC01NjUsNyArNTY1LDcgQEAgZW51bSBFeHBlcmltZW50YWxPcHRpb25G
bGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxfT1BUSU9OKHYp
IFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgTExJbnRBbmRCYXNlbGluZU9ubHksICJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYodXNlUHJpdmF0
ZUNsYXNzRmllbGRzLCBTdXBwb3J0c0RGRyB8IFN1cHBvcnRzRlRMLCAiaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKIAogY29uc3RleHByIHNpemVfdCBjb3VudE51bWJl
ck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
KworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9p
ZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQorICAg
ICAgICBvdXQucHJpbnQoIkRlZmluZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiY2RjNGNhMzA0OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVs
ZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlh
IFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdU
RiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3Qg
UHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUg
PSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0
ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZh
dGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZp
bmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZp
bmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQg
ZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHBy
IFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09
IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWludDhf
dCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404394</attachid>
            <date>2020-07-15 14:26:10 -0700</date>
            <delta_ts>2020-07-16 10:12:24 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>put_private_name.diff</filename>
            <type>text/plain</type>
            <size>96427</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmYmRiOTlhNTZlYwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsx
LDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xh
cmF0aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQg
PSB0aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNb
ZHluYW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQor
CisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0
dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJv
cGVydHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0
ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi42MWNmZjY3YjdmMGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCwwICsxLDQyIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNm
aWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAw
MCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3Qn
OworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7
CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAnZm9vJyArIGkpOworfQorCisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMTYxMDky
ZjQyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNv
dW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiZWQ5NTQxYzA0YwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFs
dWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1k
aWZmZXJlbnQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjgyYWRiZjkwMjA1MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCww
ICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0Rl
Y2xhcmF0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisgICAgCisgICAg
ICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAg
fQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxk
OworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAg
cmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKK2xldCBDMSA9IGNsYXNz
RGVjbGFyYXRpb24oKTsKK2xldCBDMiA9IGNsYXNzRGVjbGFyYXRpb24oKTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBpICUgMiA/IG5ldyBDMSA6IG5l
dyBDMjsKKyAgICBjLnNldEZpZWxkKCd0ZXN0JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAndGVzdCcgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGMyNTkxMDg2ZWJhYy4uZGJiNTYzMTFjYTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDEsNyArNTQxLDYgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAg
Ynl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5o
Ci0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmgKQEAgLTk2Niw2ICs5NjUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25z
TGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQ
dXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb21pc2VUaW1lci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDRjZDc0YzI1MjJlYS4uYmE4Y2QxNmUxZmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTI1Miw3ICsxMjUyLDYgQEAKIAkJODY3MDRCODcxMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3
MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0
ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlG
NiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAw
RTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMjYxLDYgKzEyNjAsNyBAQAogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFBy
aXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5k
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZD
MzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJN
SVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAw
MDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQx
MjAsOCArNDEyMCw2IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9
IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4
MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVy
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZ
YXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE0MSw2ICs0MTM5
LDggQEAKIAkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYg
LyogUHJvZmlsZVRyZWVOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2ZpbGVUcmVlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0
RDM1RDUxMDBBOUMzMDYgLyogVGllcmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRpZXJlZE1NYXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcml2YXRlRmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmlu
c2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3Nl
bWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc3MzAsNiArNzczMCw4IEBACiAJCQkJQ0UyN0EzRDUyMzc1OUJBQzAwODk2MDVFIC8qIFdp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUz
RDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMw
MDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8sCisJCQkJODZCODY5MDAyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhB
MjA4MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODQxNCw4ICs4NDE2
LDYgQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICov
LAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8s
CiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0J
CQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJ
CTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5
RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2
ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJG
Njg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTkyMzcsNiArOTIzNyw3
IEBACiAJCQkJQkMxOEMzRjMwRTE2RjVDRDAwQjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xv
d1BhdGhzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyog
Q29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4
OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RTVBM0E4MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY0RjExRTgyMDlCQ0RBQjAwNzA5NjU0IC8qIENvbXBpbGVyVGltaW5nU2Nv
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21w
bGV0ZVN1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTY3LDcgKzEwMTY4LDYgQEAKIAkJ
CQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8q
IFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYw
NDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2
QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NS4uNTFjYzUzNTc1MzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjgsNyArMjY4LDYgQEAgYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUv
UmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTMx
LDYgKzkzMCw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBy
dW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKK3J1bnRpbWUvUHJp
dmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCiBydW50
aW1lL1Byb21pc2VUaW1lci5jcHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMjgw
YTgyZThjNzljLi5iMWIyYjBhODhlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDYsMTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6
TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJlc3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywK
KyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcs
CiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFs
RmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVy
ZUlELApAQCAtNTczLDYgKzU3MywyMCBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAg
cHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRl
X25hbWUsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFByaXZhdGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAg
ICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAg
ICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNp
Z25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3Ag
OnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CkBAIC01OTgsNyArNjEyLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNl
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZs
YWdzLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDczNjZjYjQwYjY5
OS4uZmNkZTQwNDljZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyNiw2ICsyMjYsNyBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBp
bmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BH
ZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcFB1dFByaXZhdGVOYW1l
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3Bl
cnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0lu
c3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBA
IC0zOTQsNiArMzk1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVu
c2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1
dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1
dF9ieV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAgICBjYXNl
IG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5
OgogICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzNzA3ZDRhMDYyNDQuLjAwY2Qy
NWZlYzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBM
SU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9w
Q29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9m
aWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAg
TElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdp
dGhUaGlzLCBwcm9maWxlKQpAQCAtNTQwLDYgKzU0MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5
V2l0aFNpemUpCkBAIC0xMTI4LDYgKzExMzAsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMK
ICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1
dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdT
dHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAg
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAg
ICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjk0LDYgKzEzMTUsMjIgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0
ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IDM5ZmVlMGE2NjlhMi4uZTA1YTI1NjQ4YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgorI2luY2x1ZGUgIlBy
aXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVw
dGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1OCw0NiArMjU4LDYgQEAg
c3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8
T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywgc2l6ZT4gewotICAg
IHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5
cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQgZW51
bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0cmljdAotICAgIC8vICAgICAgICAg
ICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAotICAgIC8vICAgICAgICAg
ICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQdXQs
IDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAx
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAyOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sgPSAxMjsKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7Ci0K
LSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQdXRCeVZh
bEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKLSAgICAgICAg
YXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3Mu
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAgcmV0dXJuIChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8IChpc1N0cmljdCA8
PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNvbnZl
cnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3Qg
PSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKLSAgICAgICAgYXV0byBh
Y2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigoZ3BpICYgc19wcml2
YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQp
OwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxh
Z3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1v
ZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQg
PyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsKLSAgICB9Ci19Owot
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxF
Pjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5n
X3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0IEBAIHN0cnVjdCBGaXRzPEVDTUFN
b2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKICAgICB9CiB9OwogCit0
ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQcml2YXRlRmllbGRQdXRLaW5k
LCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0g
Rml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFByaXZhdGVGaWVs
ZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjaGVjayhwdXRN
b2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRU
eXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUg
cHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9t
Qnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlOTBmZDA3ZDBkLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewot
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwi
KTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJlY3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
RGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91
dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2
YXRlRmllbGRBZGQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0Fk
ZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
OGFkZjJkMWIzNmMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2Rl
LmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
ZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwK
LSAgICBQdXQsCi0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJs
aWM6Ci0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBl
Y21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ug
c3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90
eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxh
Z3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBz
dGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNt
YU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3Rh
dGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2Rl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6UHV0LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7
IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAg
ICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQ
cml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBj
b25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkK
LSAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZs
YWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAg
ICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kKGFjY2VzcykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9
Ci0KLSAgICBib29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ZjM1NzM4YjMxNjgu
LmY1MzU2NTU5M2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxpbmtUaW1lQ29u
c3RhbnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0
S2luZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgpAQCAtMjcxMiw3
ICsyNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRC
eVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVj
dDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0
ZURpcmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0K
IApAQCAtMjczNiwxMyArMjczNywxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0g
ICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1
dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAg
T3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFBy
aXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxk
UHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CmluZGV4IDA1OGM3YzI2NmVkNi4uY2VjYjdmZWZmYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC00MDcxLDYgKzQwNzEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0QnlWYWxX
aXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGYzZjNhZmNlY2U4MS4uYWI2ODUxZGZjODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1
dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29u
c3RydWN0b3IuaCIKQEAgLTEyNjcsMTggKzEyNjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9o
YXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJ5
dGVjb2RlPgotRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0ZWNvZGUpCi17Ci0gICAgcmV0
dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUg
RUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBieXRl
Y29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpOwotfQotCiBC
YXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRhYmxlQmxvY2soQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChieXRlY29kZUluZGV4KTsKQEAg
LTYwNDcsNiArNjAzNSw2MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3Ro
aXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOiB7Cisg
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFBy
aXZhdGVOYW1lPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jh
c2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0
eSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKKyAg
ICAgICAgICAgIGJvb2wgY29tcGlsZWRBc1B1dEJ5SWQgPSBmYWxzZTsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJ
ZFN0YXR1czsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xv
Y2spOworICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5l
U3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4o
KS5ieXRlY29kZUluZGV4KCkpKS5ieVZhbEluZm87CisgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJ
VCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhh
dCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJ5VmFsSW5mbyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0
dWJJbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Ns
b3dQYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGlsZWRBc1B1dEJ5SWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllciA9IGJ5VmFsSW5mby0+Y2FjaGVkSWQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVu
dGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CisgICAgICAg
ICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2Vs
bCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2xD
ZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29u
c3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXVpZC0+aXNTeW1i
b2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50
LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIs
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnlWYWxJbmZvLT5zdHViSW5mbywgY3VycmVudENvZGVPcmlnaW4oKSwgdWlk
KTsKKworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgY29uc3RleHByIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAg
IGlmIChjb21waWxlZEFzUHV0QnlJZCkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QsIG5leHRPcGNvZGVJbmRleCgpLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKQorICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhieXRlY29kZS5tX3B1
dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfcHJpdmF0ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVmaW5lRGF0YVByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODI2MCw3ICs4MzAzLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVj
b2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFz
UHV0QnlJZCkKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5k
ZXgsIGVjbWFNb2RlKGJ5dGVjb2RlKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBp
ZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC04MjcxLDcgKzgzMTQsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRl
eCBvc3JFeGl0SW5kZQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFk
ZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdl
LgogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVu
Z3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZh
bERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVj
bWFNb2RlKGJ5dGVjb2RlKSkpOworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNE
aXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29y
ZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBm
YWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBp
ZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVt
IGdlbmVyaWMuCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCmluZGV4IDkzNzZmMjNkYTkxYy4uZjg3NzY0YmIwNjg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTIsNiArMjky
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJf
YmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9w
cml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1
cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8g
RG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMg
aW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCAwZGRmZDU0MTMxODQuLjg0YmMxODAzNTY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY2NSw2ICs2NjUsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNl
IFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGVlNTg3MTRmNTNlYi4uYjEzZDBlYmNmYWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0
dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0
ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA0Zjk2ZjIwMGUxYzguLjVj
N2Y0MjhkM2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEV4aXRPSzoK
ICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2FzZSBUeXBlT2Y6CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhp
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZGQwZDEyZGFmOGQ5Li43ODRl
OWNkOGVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01Miw2ICs1Miw3
IEBACiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5o
IgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpAQCAtMjI4NSw2ICsyMjg2LDI0IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtp
bmQoKQorICAgIHsKKyAgICAgICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICAgICAgaWYgKG9wKCkgPT0gUHV0
UHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpm
cm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFByaXZh
dGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpOworICAgIH0KKwogICAgIGJvb2wgaGFzQXJpdGhNb2Rl
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCmluZGV4IDZhYzU5ZDdjYWQ3ZS4uZjRkMWJkZDllODA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDksNiArMjA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWxB
bGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oUHV0
UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCAw
ZTRjMzFiZjBkN2UuLjQzMzUyNjU5YjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJIZWFwQ2Vs
bC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShv
cC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBt
X3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRl
RmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZjdkYmMwYzQ4MTg3Li43ZTRjMTA1MmEwN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMzczLDYgKzEzNzMsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAg
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoK
ICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjZkYTJiNzY4ZmNjLi4zNjJjYTcyZTQ1NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjUs
NiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNl
dHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5
VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVy
dHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGZjNDExZTM2M2NhMi4uYzVjMjJjNjBkYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzUyMSw2ICszNTIxLDIyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHlWYWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0g
cHJvcGVydHlWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMygpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5l
UHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdz
LCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgp
LnZhbHVlKCkpKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQo
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKQEAgLTE0Mzg0LDcgKzE0NDAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBK
U1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAog
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAg
ICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0
ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDY2MjVkNjM5NmE1ZS4uNWNlMzg1YjEyNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzYwLDYgKzEzNjAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiwgRWRnZSYg
Y2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlUHV0
QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIs
IEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7
CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUdldEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggM2Q1
NjcxZDUyN2JjLi4zNzc0OGIzNzk1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5Niw2ICsyNTk2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0
UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDk5YThjZDkzOTJmYi4uMWJkMjcyNDg4ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5MTksNiArMjkx
OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29t
cGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggNTJhMGFjMWVhYTgwLi44MWZlNWVkODUzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Myw2ICszOTMsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5
VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsV2l0
aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIE1hdGNoU3RydWN0dXJl
OgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBlYzdhNTQ2YTExZTkuLjdmYzk4Y2IxNjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxOCw2ICsxMDE4LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNlIEF0b21p
Y3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAgLTM5MjYsNiAr
MzkyOSwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2
b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMo
KSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgp
LmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRp
b25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKDApLCBtX291
dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAg
dm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDIxNCw3ICs0MjI4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRj
aHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQ
dXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCkpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3
Ny4uNzMxNzEwMDk2Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpA
QCAtMTM5LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVz
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5o
IgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAxOTQ5NmE5OWIxNzUuLjI1M2EzZGE5YWRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKQpAQCAtNTg1LDYgKzU4Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZh
dGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCkBAIC05MDAsNyArOTAyLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1
bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5v
dEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJh
ZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlw
ZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1
dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7Cisg
ICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAg
ICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRv
IHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjY2ZTBlZDRj
OGEwLi5iMTkxMzE0OWI1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDA2LDcgKzQw
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUg
b2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVs
ZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBH
ZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNo
ZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwMyw2ICs2MDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKik7CkBAIC02ODMsNiArNjg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAy
MzY4MzA0NWYxZmQuLjdmN2U0NDk1YjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDEx
IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJh
dG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBD
YWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0
S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQg
cHJpdmF0ZUZpZWxkUHV0S2luZCkKICAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBt
X3B1dEtpbmQocHV0S2luZCkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQocHJp
dmF0ZUZpZWxkUHV0S2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOwogfQpAQCAtMTUyLDEwICsxNTIsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7Ci0g
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpOb25lKSB7CisgICAgaWYgKCFtX3ByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkpIHsKICAg
ICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOwogICAgICAgICBBU1NFUlQobV9lY21h
TW9kZS5pc1N0cmljdCgpKTsKLSAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9
PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgIGlmIChtX3ByaXZhdGVG
aWVsZFB1dEtpbmQuaXNEZWZpbmUoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmlu
ZGV4IDczMjlkNmI3MzgxNC4uMmRmZjVmZDQ3YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEz
MCwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNt
YU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkUHV0S2luZChQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpCiAgICAgeyB9CiAKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBw
cml2YXRlQWNjZXNzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
LCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgCiAgICAgdm9p
ZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsNyArMTQ0
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1
dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmll
bGRBY2Nlc3NLaW5kOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgbV9wcml2YXRlRmllbGRQdXRL
aW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCBkNTNlNjk3N2QzOWQuLjkxNTI2NjBiZjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0KIAogdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9w
UHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAgICByZXR1cm4gb3AubV9m
bGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxk
UHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsK
KyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwogfQogCiB0ZW1wbGF0ZTw+
Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNf
SU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kPE9wUHV0
UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxh
Z3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBvcC5tX3B1dEtpbmQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggYmMzY2NjODAyMzVkLi5kYWFiMzgzODUzZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTEwNSw3ICsxMTA1LDYg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLQog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMTE5LDYgKzExMTgsMTMyIEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0
KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQog
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBPcHRpbWl6YXRpb25SZXN1bHQgb3B0aW1pemF0aW9u
UmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRpbWl6ZWQ7CisKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVu
dGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2wo
KSkgeworICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Ynl0ZWNvZGVJbmRleCgpICE9IEJ5
dGVjb2RlSW5kZXgoMCkpOworICAgICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8tPnN0dWJSb3V0
aW5lKTsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRQcml2
YXRlTmFtZT4odm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIERpcmVjdCwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1p
emVkOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNl
ZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAgICAgICAg
ICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNv
ZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0
OjpPcHRpbWl6ZWQgJiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6
U2Vlbk9uY2UpIHsKKyAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEw
IHRpbWVzIHdpdGhvdXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2
ZXIgbWFrZSB0aGF0IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0
aCBvZiBvcHBvcnR1bml0eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBw
dXRfcHJpdmF0ZV9uYW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQg
dXAgc2xvd1BhdGhDb3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBp
ZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBp
ZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7Cisg
ICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNEZWZpbmUo
KSA/ICBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2
YXRlTmFtZUdlbmVyaWMpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAKKyAg
ICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4
aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0
IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCisg
ICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNh
biBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5k
IGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wg
aXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNl
VmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9k
ZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIHNjb3BlLnJlbGVh
c2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhp
biBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5
cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAg
ICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+ZGVm
aW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA0YzIyMDUzMGFi
NGQuLjNmNGFhYTU5OWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiSklU
TWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5j
bHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCisKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCkBAIC0xOTMsMTAgKzE5
NSwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
TGlua0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDdlMDk0NDIwOTIyNS4uMmZhMTMxODE2ZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBA
IC0yNzUsNyArMjc2LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUp
LCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0
dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhN
RTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkg
dG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAg
ZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJl
Y3QpCkBAIC0zMjgsNiArMzI5LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9i
eVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRj
aGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExh
YmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgY29uc3Ry
dWN0b3IgZm9yIEJ5VmFsQ29tcGlsYXRpb25JbmZvCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5m
by5hcHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgs
IGZhc3RQYXRoSm1wLCBQYXRjaGFibGVKdW1wKCksIEpJVEFycmF5TW9kZTo6SklUSW50MzIsIG51
bGxwdHIsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2Rl
Lm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xv
d1BhdGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BS
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BS
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRL
aW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVy
QnlJZD4oKTsKQEAgLTY1OSw3ICs3MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzMTcsNyArMTM2MCw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0
ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xNDI4LDcgKzE0NzEsNyBAQCB0ZW1wbGF0ZSB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBD
b25jdXJyZW50SlNMbwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6
Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJl
Y3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtp
bmQgPT0gRGlyZWN0ICYmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwg
T3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUgKSkgfHwgKHB1dEtpbmQgPT0gTm90
RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDUwLDE4ICsxNDkzLDMyIEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1
ZmZlciwgcGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25zdGV4
cHIKKyAgICB7CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJl
Y3QpCisgICAgICAgICAgICByZXR1cm4gInB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYg
KE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJu
ICJwdXRfcHJpdmF0ZV9uYW1lIjsKKyAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9
OworCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIo
CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcs
Ci0gICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFt
ZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3Qp
ID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9D
U3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAg
ICAgICAiQmFzZWxpbmUgJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9y
ICVzLCByZXR1cm4gcG9pbnQgJXAiLCBvcGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+
dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRy
ZXNzLnZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsK
IAorICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAg
aWYgY29uc3RleHByIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAg
ICAgZ2VuZXJpY0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdl
bmVyaWM7CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRh
Zz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNG
dW5jdGlvbikpOwogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5v
dGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0
IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28g
d2UgbGlzdCBvZmYgdGhlIHRocmVlIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNl
LgogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8
T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVh
YmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNz
UHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFs
SW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwog
CiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2Li4wNjc2
OTRiNzkyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCBy
ZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVt
cCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0
aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICAvLyBGSVhNRTog
QWRkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBCeVZhbENvbXBpbGF0aW9uSW5mbworICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywg
bV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgUGF0Y2hhYmxlSnVtcCgpLCBKSVRBcnJheU1v
ZGU6OkpJVEludDMyLCBudWxscHRyLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxSZWdp
c3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFs
SW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtp
bmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0g
bGFiZWwoKTsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50
YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0eSwg
cHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBl
bWl0TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRhZ0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihw
dXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNh
bGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudElu
c3RydWN0aW9uKTsKQEAgLTY2NCw3ICs3MDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5
dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmll
bGRQdXRLaW5kOjpub25lKCkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBj
NTIzZThhNjAwNmQuLmI2NmM3MzAxZTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDggKzU5LDggQEAK
ICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5h
dGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAxNmFjMTgwMThi
MzQuLjMxNGU5OWRjMGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC0xMTc3LDQyICsxMTc3LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0g
Ynl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0
TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlw
dC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwot
ICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
LSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0g
c3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0
QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9F
TkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3Qg
aWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlz
UHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElO
VF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNmFkYTJiNTE0YjljLi44ODMy
MDNjYTAzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC01ODksNiArNTg5LDEzIEBAIG1hY3JvIHdy
aXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKICAg
ICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQo
c2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdldChj
ZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmllck9u
Q2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVyRG9u
ZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxsRmll
bGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQpA
QCAtMTYyMSw2ICsxNjI4LDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVf
bmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0
Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUsIE9w
UHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFs
dWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0
KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1
LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1
cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5v
cFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRh
dGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5h
bWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmpl
Y3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1l
dGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1
Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAg
c3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25P
cGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBS
ZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAg
ICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAub3BQ
dXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAg
ICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBi
YXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
b2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkK
K2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4
aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggM2Y2NzQ2YzM3MGY3Li40ZGYyNTMwM2QzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0x
NzIwLDYgKzE3MjAsNDkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1l
LCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgp
CiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQ
cml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6
ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHksIHQz
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wUHV0UHJp
dmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZh
dGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAg
IGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9p
bnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVu
dCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0
MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQs
IG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAg
ICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAg
ICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9u
bHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAg
IGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0
MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0
MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCisgICAgd3Jp
dGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBkaXNw
YXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0
QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gY29udGln
dW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBmZGFjZTcyY2JmNTcuLjg1MTQyNmUz
MjFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC0xMzMzLDYgKzEzMzMsMTA1IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
R0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKKworICAgIGF1dG8gcHJvcGVy
dHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VY
Q0VQVElPTigpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXND
ZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOworCisg
ICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxl
eGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmlj
dCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAoYnl0ZWNvZGUubV9wdXRLaW5kLmlz
RGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VChieXRlY29kZS5tX3B1dEtpbmQuaXNTZXQoKSk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dFBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgfQor
CisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYgYmFzZVZhbHVl
LmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAgICAmJiBz
dWJzY3JpcHQuaXNDZWxsKCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQg
b2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAg
aWYgKG9sZFN0cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJv
cGVydHkpCisgICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CisKKyAgICAg
ICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikp
IHsKKyAgICAgICAgICAgICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0
Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5
IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+cmFyZURhdGEo
KS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJl
RGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGFydCBvdXQg
YnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3Ry
dWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAgICAgIG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5
LmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUodm0pOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0
eSkgeworICAgICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29k
ZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0
dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVk
KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4gJiYgIXNh
d1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdT
dHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFz
c2VydCBoZWxwcyBjYXRjaCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQgdG8gZGlzYWJs
ZSBjYWNoaW5nCisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9uIHRoZW4gc3Rv
cmUgdG8gYW4gZXhpc3RpbmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25nCisgICAgICAg
ICAgICAgICAgLy8gcGF0aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElmIHdlIHJlaWZ5
IGEgbGF6eSBwcm9wZXJ0eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8gdG8gZGlzYWJs
ZSBjYWNoaW5nLCB3ZSBtYXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxhY2UgSUMgZG9l
cyBub3QKKyAgICAgICAgICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVzZSB0eXBlcyBv
ZiBzdHJ1Y3R1cmUgdHJhbnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAg
ICAvLyB0cmFuc2l0aW9uIGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobmV3U3RydWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAg
bmV3U3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9j
aywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIEVORCgpOyAgICAKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9wcml2YXRlX25hbWUpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNjUzOGE1NTViMjVlLi5m
OTE0NDFhYWJkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCkBAIC0yNzYsNiArMjc2LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9w
cml2YXRlX25hbWUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0
ZV9uYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3Byb3RvdHlwZV9v
Zik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhZGZi
NzlmZGRhODEuLjBmMzc1NmZkZmIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC01NjUsNyArNTY1LDcgQEAgZW51bSBFeHBlcmltZW50YWxPcHRp
b25GbGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxfT1BUSU9O
KHYpIFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgTExJbnRBbmRCYXNlbGluZU9ubHks
ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYodXNlUHJp
dmF0ZUNsYXNzRmllbGRzLCBTdXBwb3J0c0RGRyB8IFN1cHBvcnRzRlRMLCAiaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKIAogY29uc3RleHByIHNpemVfdCBjb3VudE51
bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
dm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQor
ICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtp
bmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiY2RjNGNhMzA0OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVG
aWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1
Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5v
bmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1
cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJp
dmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25l
KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJl
dHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFBy
aXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChE
ZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNE
ZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZv
aWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3Rl
eHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVl
ID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWlu
dDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404459</attachid>
            <date>2020-07-16 10:12:24 -0700</date>
            <delta_ts>2020-07-17 08:12:10 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>put_private_name.diff</filename>
            <type>text/plain</type>
            <size>96427</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmYmRiOTlhNTZlYwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsx
LDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xh
cmF0aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQg
PSB0aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNb
ZHluYW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQor
CisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0
dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJv
cGVydHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0
ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi42MWNmZjY3YjdmMGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCwwICsxLDQyIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNm
aWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAw
MCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3Qn
OworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7
CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAnZm9vJyArIGkpOworfQorCisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMTYxMDky
ZjQyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNv
dW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiZWQ5NTQxYzA0YwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFs
dWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1k
aWZmZXJlbnQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjgyYWRiZjkwMjA1MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCww
ICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0Rl
Y2xhcmF0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisgICAgCisgICAg
ICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAg
fQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxk
OworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAg
cmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKK2xldCBDMSA9IGNsYXNz
RGVjbGFyYXRpb24oKTsKK2xldCBDMiA9IGNsYXNzRGVjbGFyYXRpb24oKTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBpICUgMiA/IG5ldyBDMSA6IG5l
dyBDMjsKKyAgICBjLnNldEZpZWxkKCd0ZXN0JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAndGVzdCcgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGMyNTkxMDg2ZWJhYy4uZGJiNTYzMTFjYTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDEsNyArNTQxLDYgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAg
Ynl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5o
Ci0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmgKQEAgLTk2Niw2ICs5NjUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25z
TGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQ
dXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb21pc2VUaW1lci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDRjZDc0YzI1MjJlYS4uYmE4Y2QxNmUxZmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTI1Miw3ICsxMjUyLDYgQEAKIAkJODY3MDRCODcxMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3
MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0
ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlG
NiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAw
RTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMjYxLDYgKzEyNjAsNyBAQAogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFBy
aXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5k
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZD
MzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJN
SVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAw
MDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQx
MjAsOCArNDEyMCw2IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9
IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4
MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVy
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZ
YXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE0MSw2ICs0MTM5
LDggQEAKIAkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYg
LyogUHJvZmlsZVRyZWVOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2ZpbGVUcmVlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0
RDM1RDUxMDBBOUMzMDYgLyogVGllcmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRpZXJlZE1NYXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcml2YXRlRmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmlu
c2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3Nl
bWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc3MzAsNiArNzczMCw4IEBACiAJCQkJQ0UyN0EzRDUyMzc1OUJBQzAwODk2MDVFIC8qIFdp
ZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUz
RDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMw
MDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8sCisJCQkJODZCODY5MDAyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhB
MjA4MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODQxNCw4ICs4NDE2
LDYgQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICov
LAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8s
CiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0J
CQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJ
CTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5
RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2
ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJG
Njg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTkyMzcsNiArOTIzNyw3
IEBACiAJCQkJQkMxOEMzRjMwRTE2RjVDRDAwQjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xv
d1BhdGhzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyog
Q29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4
OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RTVBM0E4MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY0RjExRTgyMDlCQ0RBQjAwNzA5NjU0IC8qIENvbXBpbGVyVGltaW5nU2Nv
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21w
bGV0ZVN1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTY3LDcgKzEwMTY4LDYgQEAKIAkJ
CQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8q
IFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYw
NDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2
QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NS4uNTFjYzUzNTc1MzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjgsNyArMjY4LDYgQEAgYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUv
UmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTMx
LDYgKzkzMCw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBy
dW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKK3J1bnRpbWUvUHJp
dmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCiBydW50
aW1lL1Byb21pc2VUaW1lci5jcHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMjgw
YTgyZThjNzljLi5iMWIyYjBhODhlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDYsMTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6
TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJlc3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywK
KyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcs
CiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFs
RmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVy
ZUlELApAQCAtNTczLDYgKzU3MywyMCBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAg
cHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRl
X25hbWUsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFByaXZhdGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAg
ICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAg
ICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNp
Z25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3Ag
OnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CkBAIC01OTgsNyArNjEyLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNl
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZs
YWdzLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDczNjZjYjQwYjY5
OS4uZmNkZTQwNDljZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyNiw2ICsyMjYsNyBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBp
bmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BH
ZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcFB1dFByaXZhdGVOYW1l
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3Bl
cnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0lu
c3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBA
IC0zOTQsNiArMzk1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVu
c2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1
dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1
dF9ieV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAgICBjYXNl
IG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5
OgogICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzNzA3ZDRhMDYyNDQuLjAwY2Qy
NWZlYzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBM
SU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9w
Q29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9m
aWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAg
TElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdp
dGhUaGlzLCBwcm9maWxlKQpAQCAtNTQwLDYgKzU0MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5
V2l0aFNpemUpCkBAIC0xMTI4LDYgKzExMzAsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMK
ICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1
dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdT
dHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAg
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAg
ICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjk0LDYgKzEzMTUsMjIgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0
ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IDM5ZmVlMGE2NjlhMi4uZTA1YTI1NjQ4YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgorI2luY2x1ZGUgIlBy
aXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVw
dGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1OCw0NiArMjU4LDYgQEAg
c3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8
T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywgc2l6ZT4gewotICAg
IHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5
cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQgZW51
bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0cmljdAotICAgIC8vICAgICAgICAg
ICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAotICAgIC8vICAgICAgICAg
ICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQdXQs
IDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAx
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAyOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sgPSAxMjsKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7Ci0K
LSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQdXRCeVZh
bEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKLSAgICAgICAg
YXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3Mu
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAgcmV0dXJuIChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8IChpc1N0cmljdCA8
PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNvbnZl
cnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3Qg
PSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKLSAgICAgICAgYXV0byBh
Y2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigoZ3BpICYgc19wcml2
YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQp
OwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxh
Z3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1v
ZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQg
PyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsKLSAgICB9Ci19Owot
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxF
Pjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5n
X3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0IEBAIHN0cnVjdCBGaXRzPEVDTUFN
b2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKICAgICB9CiB9OwogCit0
ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQcml2YXRlRmllbGRQdXRLaW5k
LCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0g
Rml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFByaXZhdGVGaWVs
ZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjaGVjayhwdXRN
b2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRU
eXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUg
cHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9t
Qnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlOTBmZDA3ZDBkLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewot
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwi
KTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJlY3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
RGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91
dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2
YXRlRmllbGRBZGQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0Fk
ZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
OGFkZjJkMWIzNmMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2Rl
LmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
ZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwK
LSAgICBQdXQsCi0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJs
aWM6Ci0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBl
Y21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ug
c3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90
eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxh
Z3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBz
dGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNt
YU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3Rh
dGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2Rl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6UHV0LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7
IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAg
ICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQ
cml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBj
b25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkK
LSAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZs
YWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAg
ICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kKGFjY2VzcykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9
Ci0KLSAgICBib29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ZjM1NzM4YjMxNjgu
LmY1MzU2NTU5M2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxpbmtUaW1lQ29u
c3RhbnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0
S2luZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgpAQCAtMjcxMiw3
ICsyNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRC
eVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVj
dDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0
ZURpcmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0K
IApAQCAtMjczNiwxMyArMjczNywxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0g
ICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1
dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAg
T3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFBy
aXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxk
UHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CmluZGV4IDA1OGM3YzI2NmVkNi4uY2VjYjdmZWZmYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC00MDcxLDYgKzQwNzEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0QnlWYWxX
aXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGYzZjNhZmNlY2U4MS4uYWI2ODUxZGZjODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1
dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29u
c3RydWN0b3IuaCIKQEAgLTEyNjcsMTggKzEyNjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9o
YXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJ5
dGVjb2RlPgotRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0ZWNvZGUpCi17Ci0gICAgcmV0
dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUg
RUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBieXRl
Y29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpOwotfQotCiBC
YXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRhYmxlQmxvY2soQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChieXRlY29kZUluZGV4KTsKQEAg
LTYwNDcsNiArNjAzNSw2MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3Ro
aXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOiB7Cisg
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFBy
aXZhdGVOYW1lPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jh
c2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0
eSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKKyAg
ICAgICAgICAgIGJvb2wgY29tcGlsZWRBc1B1dEJ5SWQgPSBmYWxzZTsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJ
ZFN0YXR1czsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xv
Y2spOworICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5l
U3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4o
KS5ieXRlY29kZUluZGV4KCkpKS5ieVZhbEluZm87CisgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJ
VCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhh
dCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJ5VmFsSW5mbyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0
dWJJbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Ns
b3dQYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGlsZWRBc1B1dEJ5SWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllciA9IGJ5VmFsSW5mby0+Y2FjaGVkSWQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVu
dGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CisgICAgICAg
ICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2Vs
bCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2xD
ZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29u
c3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXVpZC0+aXNTeW1i
b2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50
LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIs
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnlWYWxJbmZvLT5zdHViSW5mbywgY3VycmVudENvZGVPcmlnaW4oKSwgdWlk
KTsKKworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgY29uc3RleHByIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAg
IGlmIChjb21waWxlZEFzUHV0QnlJZCkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QsIG5leHRPcGNvZGVJbmRleCgpLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKQorICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhieXRlY29kZS5tX3B1
dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfcHJpdmF0ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVmaW5lRGF0YVByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODI2MCw3ICs4MzAzLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVj
b2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFz
UHV0QnlJZCkKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5k
ZXgsIGVjbWFNb2RlKGJ5dGVjb2RlKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBp
ZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC04MjcxLDcgKzgzMTQsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRl
eCBvc3JFeGl0SW5kZQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFk
ZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdl
LgogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVu
Z3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZh
bERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVj
bWFNb2RlKGJ5dGVjb2RlKSkpOworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNE
aXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29y
ZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBm
YWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBp
ZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVt
IGdlbmVyaWMuCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCmluZGV4IDkzNzZmMjNkYTkxYy4uZjg3NzY0YmIwNjg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTIsNiArMjky
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJf
YmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9w
cml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1
cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8g
RG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMg
aW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCAwZGRmZDU0MTMxODQuLjg0YmMxODAzNTY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY2NSw2ICs2NjUsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNl
IFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGVlNTg3MTRmNTNlYi4uYjEzZDBlYmNmYWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0
dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0
ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA0Zjk2ZjIwMGUxYzguLjVj
N2Y0MjhkM2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEV4aXRPSzoK
ICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2FzZSBUeXBlT2Y6CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhp
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZGQwZDEyZGFmOGQ5Li43ODRl
OWNkOGVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01Miw2ICs1Miw3
IEBACiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5o
IgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpAQCAtMjI4NSw2ICsyMjg2LDI0IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtp
bmQoKQorICAgIHsKKyAgICAgICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICAgICAgaWYgKG9wKCkgPT0gUHV0
UHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpm
cm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFByaXZh
dGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpOworICAgIH0KKwogICAgIGJvb2wgaGFzQXJpdGhNb2Rl
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCmluZGV4IDZhYzU5ZDdjYWQ3ZS4uZjRkMWJkZDllODA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDksNiArMjA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWxB
bGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oUHV0
UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCAw
ZTRjMzFiZjBkN2UuLjQzMzUyNjU5YjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJIZWFwQ2Vs
bC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShv
cC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBt
X3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRl
RmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZjdkYmMwYzQ4MTg3Li43ZTRjMTA1MmEwN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMzczLDYgKzEzNzMsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAg
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoK
ICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjZkYTJiNzY4ZmNjLi4zNjJjYTcyZTQ1NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjUs
NiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNl
dHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5
VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVy
dHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGZjNDExZTM2M2NhMi4uYzVjMjJjNjBkYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzUyMSw2ICszNTIxLDIyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHlWYWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0g
cHJvcGVydHlWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMygpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5l
UHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdz
LCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgp
LnZhbHVlKCkpKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQo
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKQEAgLTE0Mzg0LDcgKzE0NDAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBK
U1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAog
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAg
ICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0
ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDY2MjVkNjM5NmE1ZS4uNWNlMzg1YjEyNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzYwLDYgKzEzNjAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiwgRWRnZSYg
Y2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlUHV0
QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIs
IEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7
CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUdldEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggM2Q1
NjcxZDUyN2JjLi4zNzc0OGIzNzk1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5Niw2ICsyNTk2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0
UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDk5YThjZDkzOTJmYi4uMWJkMjcyNDg4ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5MTksNiArMjkx
OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29t
cGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggNTJhMGFjMWVhYTgwLi44MWZlNWVkODUzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Myw2ICszOTMsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5
VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsV2l0
aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIE1hdGNoU3RydWN0dXJl
OgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBlYzdhNTQ2YTExZTkuLjdmYzk4Y2IxNjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxOCw2ICsxMDE4LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNlIEF0b21p
Y3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAgLTM5MjYsNiAr
MzkyOSwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2
b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMo
KSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgp
LmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRp
b25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKDApLCBtX291
dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAg
dm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDIxNCw3ICs0MjI4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRj
aHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQ
dXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCkpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3
Ny4uNzMxNzEwMDk2Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpA
QCAtMTM5LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVz
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5o
IgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAxOTQ5NmE5OWIxNzUuLjI1M2EzZGE5YWRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKQpAQCAtNTg1LDYgKzU4Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZh
dGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCkBAIC05MDAsNyArOTAyLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1
bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5v
dEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJh
ZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlw
ZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1
dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7Cisg
ICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAg
ICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRv
IHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjY2ZTBlZDRj
OGEwLi5iMTkxMzE0OWI1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDA2LDcgKzQw
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUg
b2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVs
ZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBH
ZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNo
ZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwMyw2ICs2MDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKik7CkBAIC02ODMsNiArNjg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAy
MzY4MzA0NWYxZmQuLjdmN2U0NDk1YjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDEx
IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJh
dG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBD
YWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0
S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQg
cHJpdmF0ZUZpZWxkUHV0S2luZCkKICAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBt
X3B1dEtpbmQocHV0S2luZCkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQocHJp
dmF0ZUZpZWxkUHV0S2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOwogfQpAQCAtMTUyLDEwICsxNTIsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7Ci0g
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpOb25lKSB7CisgICAgaWYgKCFtX3ByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkpIHsKICAg
ICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOwogICAgICAgICBBU1NFUlQobV9lY21h
TW9kZS5pc1N0cmljdCgpKTsKLSAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9
PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgIGlmIChtX3ByaXZhdGVG
aWVsZFB1dEtpbmQuaXNEZWZpbmUoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmlu
ZGV4IDczMjlkNmI3MzgxNC4uMmRmZjVmZDQ3YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEz
MCwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNt
YU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkUHV0S2luZChQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpCiAgICAgeyB9CiAKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBw
cml2YXRlQWNjZXNzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
LCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgCiAgICAgdm9p
ZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsNyArMTQ0
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1
dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmll
bGRBY2Nlc3NLaW5kOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgbV9wcml2YXRlRmllbGRQdXRL
aW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCBkNTNlNjk3N2QzOWQuLjkxNTI2NjBiZjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0KIAogdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9w
UHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAgICByZXR1cm4gb3AubV9m
bGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxk
UHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsK
KyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwogfQogCiB0ZW1wbGF0ZTw+
Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNf
SU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kPE9wUHV0
UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxh
Z3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBvcC5tX3B1dEtpbmQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggYmMzY2NjODAyMzVkLi5kYWFiMzgzODUzZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTEwNSw3ICsxMTA1LDYg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLQog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMTE5LDYgKzExMTgsMTMyIEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0
KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQog
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBPcHRpbWl6YXRpb25SZXN1bHQgb3B0aW1pemF0aW9u
UmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRpbWl6ZWQ7CisKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVu
dGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2wo
KSkgeworICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Ynl0ZWNvZGVJbmRleCgpICE9IEJ5
dGVjb2RlSW5kZXgoMCkpOworICAgICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8tPnN0dWJSb3V0
aW5lKTsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRQcml2
YXRlTmFtZT4odm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIERpcmVjdCwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1p
emVkOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNl
ZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAgICAgICAg
ICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNv
ZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0
OjpPcHRpbWl6ZWQgJiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6
U2Vlbk9uY2UpIHsKKyAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEw
IHRpbWVzIHdpdGhvdXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2
ZXIgbWFrZSB0aGF0IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0
aCBvZiBvcHBvcnR1bml0eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBw
dXRfcHJpdmF0ZV9uYW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQg
dXAgc2xvd1BhdGhDb3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBp
ZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBp
ZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7Cisg
ICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNEZWZpbmUo
KSA/ICBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2
YXRlTmFtZUdlbmVyaWMpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAKKyAg
ICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4
aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0
IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCisg
ICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNh
biBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5k
IGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wg
aXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNl
VmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9k
ZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIHNjb3BlLnJlbGVh
c2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhp
biBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5
cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAg
ICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+ZGVm
aW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA0YzIyMDUzMGFi
NGQuLjNmNGFhYTU5OWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiSklU
TWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5j
bHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCisKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCkBAIC0xOTMsMTAgKzE5
NSwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
TGlua0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDdlMDk0NDIwOTIyNS4uMmZhMTMxODE2ZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBA
IC0yNzUsNyArMjc2LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUp
LCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0
dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhN
RTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkg
dG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAg
ZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJl
Y3QpCkBAIC0zMjgsNiArMzI5LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9i
eVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRj
aGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExh
YmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgY29uc3Ry
dWN0b3IgZm9yIEJ5VmFsQ29tcGlsYXRpb25JbmZvCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5m
by5hcHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgs
IGZhc3RQYXRoSm1wLCBQYXRjaGFibGVKdW1wKCksIEpJVEFycmF5TW9kZTo6SklUSW50MzIsIG51
bGxwdHIsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2Rl
Lm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xv
d1BhdGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BS
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BS
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRL
aW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVy
QnlJZD4oKTsKQEAgLTY1OSw3ICs3MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzMTcsNyArMTM2MCw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0
ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xNDI4LDcgKzE0NzEsNyBAQCB0ZW1wbGF0ZSB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBD
b25jdXJyZW50SlNMbwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6
Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJl
Y3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtp
bmQgPT0gRGlyZWN0ICYmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwg
T3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUgKSkgfHwgKHB1dEtpbmQgPT0gTm90
RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDUwLDE4ICsxNDkzLDMyIEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1
ZmZlciwgcGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25zdGV4
cHIKKyAgICB7CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJl
Y3QpCisgICAgICAgICAgICByZXR1cm4gInB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYg
KE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJu
ICJwdXRfcHJpdmF0ZV9uYW1lIjsKKyAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9
OworCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIo
CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcs
Ci0gICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFt
ZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3Qp
ID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9D
U3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAg
ICAgICAiQmFzZWxpbmUgJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9y
ICVzLCByZXR1cm4gcG9pbnQgJXAiLCBvcGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+
dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRy
ZXNzLnZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsK
IAorICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAg
aWYgY29uc3RleHByIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAg
ICAgZ2VuZXJpY0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdl
bmVyaWM7CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRh
Zz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNG
dW5jdGlvbikpOwogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5v
dGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0
IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28g
d2UgbGlzdCBvZmYgdGhlIHRocmVlIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNl
LgogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8
T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVh
YmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNz
UHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFs
SW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwog
CiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2Li4wNjc2
OTRiNzkyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCBy
ZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVt
cCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0
aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICAvLyBGSVhNRTog
QWRkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBCeVZhbENvbXBpbGF0aW9uSW5mbworICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywg
bV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgUGF0Y2hhYmxlSnVtcCgpLCBKSVRBcnJheU1v
ZGU6OkpJVEludDMyLCBudWxscHRyLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxSZWdp
c3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFs
SW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtp
bmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0g
bGFiZWwoKTsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50
YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0eSwg
cHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBl
bWl0TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRhZ0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihw
dXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNh
bGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudElu
c3RydWN0aW9uKTsKQEAgLTY2NCw3ICs3MDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5
dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmll
bGRQdXRLaW5kOjpub25lKCkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBj
NTIzZThhNjAwNmQuLmI2NmM3MzAxZTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDggKzU5LDggQEAK
ICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5h
dGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAxNmFjMTgwMThi
MzQuLjMxNGU5OWRjMGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC0xMTc3LDQyICsxMTc3LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0g
Ynl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0
TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlw
dC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwot
ICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
LSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0g
c3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0
QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9F
TkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3Qg
aWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlz
UHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElO
VF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNmFkYTJiNTE0YjljLi44ODMy
MDNjYTAzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC01ODksNiArNTg5LDEzIEBAIG1hY3JvIHdy
aXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKICAg
ICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQo
c2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdldChj
ZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmllck9u
Q2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVyRG9u
ZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxsRmll
bGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQpA
QCAtMTYyMSw2ICsxNjI4LDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVf
bmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0
Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUsIE9w
UHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFs
dWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0
KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1
LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1
cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5v
cFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRh
dGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5h
bWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmpl
Y3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1l
dGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1
Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAg
c3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25P
cGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBS
ZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAg
ICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAub3BQ
dXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAg
ICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBi
YXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
b2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkK
K2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4
aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggM2Y2NzQ2YzM3MGY3Li40ZGYyNTMwM2QzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0x
NzIwLDYgKzE3MjAsNDkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1l
LCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgp
CiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQ
cml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6
ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHksIHQz
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wUHV0UHJp
dmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZh
dGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAg
IGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9p
bnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVu
dCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0
MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQs
IG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAg
ICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAg
ICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9u
bHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAg
IGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0
MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0
MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCisgICAgd3Jp
dGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBkaXNw
YXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0
QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gY29udGln
dW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBmZGFjZTcyY2JmNTcuLjg1MTQyNmUz
MjFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC0xMzMzLDYgKzEzMzMsMTA1IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdl
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
R0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKKworICAgIGF1dG8gcHJvcGVy
dHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VY
Q0VQVElPTigpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXND
ZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOworCisg
ICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxl
eGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmlj
dCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAoYnl0ZWNvZGUubV9wdXRLaW5kLmlz
RGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VChieXRlY29kZS5tX3B1dEtpbmQuaXNTZXQoKSk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dFBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgfQor
CisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYgYmFzZVZhbHVl
LmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAgICAmJiBz
dWJzY3JpcHQuaXNDZWxsKCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQg
b2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAg
aWYgKG9sZFN0cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJv
cGVydHkpCisgICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CisKKyAgICAg
ICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikp
IHsKKyAgICAgICAgICAgICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0
Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5
IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+cmFyZURhdGEo
KS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJl
RGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGFydCBvdXQg
YnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3Ry
dWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAgICAgIG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5
LmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUodm0pOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0
eSkgeworICAgICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29k
ZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0
dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVk
KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4gJiYgIXNh
d1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdT
dHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFz
c2VydCBoZWxwcyBjYXRjaCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQgdG8gZGlzYWJs
ZSBjYWNoaW5nCisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9uIHRoZW4gc3Rv
cmUgdG8gYW4gZXhpc3RpbmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25nCisgICAgICAg
ICAgICAgICAgLy8gcGF0aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElmIHdlIHJlaWZ5
IGEgbGF6eSBwcm9wZXJ0eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8gdG8gZGlzYWJs
ZSBjYWNoaW5nLCB3ZSBtYXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxhY2UgSUMgZG9l
cyBub3QKKyAgICAgICAgICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVzZSB0eXBlcyBv
ZiBzdHJ1Y3R1cmUgdHJhbnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAg
ICAvLyB0cmFuc2l0aW9uIGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobmV3U3RydWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAg
bmV3U3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9j
aywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIEVORCgpOyAgICAKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9wcml2YXRlX25hbWUpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNjUzOGE1NTViMjVlLi5m
OTE0NDFhYWJkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCkBAIC0yNzYsNiArMjc2LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9w
cml2YXRlX25hbWUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0
ZV9uYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3Byb3RvdHlwZV9v
Zik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhZGZi
NzlmZGRhODEuLjBmMzc1NmZkZmIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC01NjUsNyArNTY1LDcgQEAgZW51bSBFeHBlcmltZW50YWxPcHRp
b25GbGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxfT1BUSU9O
KHYpIFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgTExJbnRBbmRCYXNlbGluZU9ubHks
ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYodXNlUHJp
dmF0ZUNsYXNzRmllbGRzLCBTdXBwb3J0c0RGRyB8IFN1cHBvcnRzRlRMLCAiaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKIAogY29uc3RleHByIHNpemVfdCBjb3VudE51
bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
dm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQor
ICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtp
bmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZiY2RjNGNhMzA0OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVG
aWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1
Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5v
bmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1
cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJp
dmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25l
KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJl
dHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFBy
aXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChE
ZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNE
ZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZv
aWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3Rl
eHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVl
ID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWlu
dDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404563</attachid>
            <date>2020-07-17 08:12:15 -0700</date>
            <delta_ts>2020-07-22 12:49:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200717121212.patch</filename>
            <type>text/plain</type>
            <size>115672</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzIyZDE1MWI5NmYwZjgzYWZjMWU3OTU2Y2JjZWZmNjE2M2YyOTY1Li4yN2MzYzA0ZmU0MjAyZDIz
YjJhYjczZjZkNDc0ZDdiMTVkMDQxMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMjAtMDctMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wX2NvZGUgdG8gaGFuZGxl
IHByaXZhdGUgZmllbGRzIHN0b3JlL2RlZmluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBuZXcgb3Bjb2RlIHRv
IGhhbmRsZSBwcml2YXRlIGZpZWxkIHN0b3JhZ2UuCisgICAgICAgIEJlZm9yZSB0aGlzIGNoYW5n
ZSwgd2Ugd2VyZSB1c2luZyBgcHV0X2J5X3ZhbF9kaXJlY3RgIGFuZCBpbmNsdWRpbmcKKyAgICAg
ICAgdGhlIGluZm9ybWF0aW9uIG9mIGBQdXRLaW5kYCBpbnRvIGBQdXRCeVZhbEZsYWdzYC4gV2Ug
aW5pdGlhbGx5IGRlY2lkZWQKKyAgICAgICAgdG8gdXNlIGBwdXRfYnlfdmFsX2RpcmVjdGAgdG8g
dGFrZSBhZHZhbnRhZ2Ugb2YgYWxsIElDIG1lY2hhbmlzbSBhbHJlYWR5CisgICAgICAgIGltcGxl
bWVudGVkIGZvciB0aGlzIGluc3RydWN0aW9uLCBob3dldmVyIHRoZSBzZW1hbnRpY3Mgb2YgcHJp
dmF0ZSBmaWVsZAorICAgICAgICBpcyBkaWZmZXJlbnQgZW5vdWdoIHRvIGNvbXBsaWNhdGUgdGhl
IHVuZGVyc3RhbmRpbmcgb2YKKyAgICAgICAgYHB1dF9ieV92YWxfZGlyZWN0YC4KKworICAgICAg
ICBUaGUgbmV3IGluc3RydWN0aW9uIGlzIGNhbGxlZCBgcHV0X3ByaXZhdGVfbmFtZWAgYW5kIGhh
cyBhcyBpdCBvcGVyYW5kcworICAgICAgICBgYmFzZU9iamVjdGAgd2hlcmUgdGhlIHB1dCBpcyBn
b2luZyB0byBiZSBwbGFjZWQsIHRoZSBgcHJvcGVydHlgCisgICAgICAgIHRoYXQncyBnb2luZyB0
byBiZSBpbnN0YWxsZWQgKGl0IGlzIGFsd2F5cyBhIHByaXZhdGUgc3ltYm9sIG9mIGEKKyAgICAg
ICAgcHJpdmF0ZSBmaWVsZCksIHRoZSBgdmFsdWVgIHdlIGFyZSBnb2luZyB0byBzdG9yZSBhbmQg
dGhlCisgICAgICAgIGBQcml2YXRlRmllbGRQdXRLaW5kYCB0aGF0IGNhbiBiZSBgRGVmaW5lYCBv
ciBgU2V0YC4KKyAgICAgICAgVGhlIGRpZmZlcmVuY2Ugb2YgZWFjaCBgUHJpdmF0ZUZpZWxkUHV0
S2luZGAgaXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgCisgICAgICAgIC0gRGVmaW5lOiBJdCBk
ZWZpbmVzIGEgbmV3IHByaXZhdGUgZmllbGQuIElmIHRoaXMgZmllbGQgaXMgYWxyZWFkeQorICAg
ICAgICBwcmVzZW50LCBpdCB0aHJvd3MgYSBgVHlwZUVycm9yYC4KKyAgICAgICAgLSBTZXQ6IEl0
IHNldHMgdGhlIHZhbHVlIG9mIGEgcHJpdmF0ZSBmaWVsZC4gSWYgdGhlIGZpZWxkIGlzIG5vdAor
ICAgICAgICBwcmVzZW50IGF0IHRoZSBtb21lbnQgb2Ygc2V0LCBpdCB0aHJvd3MgYSBgVHlwZUVy
cm9yYAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgc3VwcG9ydCBvZiBJQyBmb3IgYWxs
IHRpZXJzLCBpbmNsdWRpbmcgTExJbnQuCisgICAgICAgIEl0IGlzIGFsc28gYWRkaW5nIGEgbmV3
IERGRyBub2RlIGBQdXRQcml2YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAg
Y2FzZSBvZiBgcHV0X3ByaXZhdGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUK
KyAgICAgICAgYHB1dF9wcml2YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2Ug
YXJlIHVzaW5nIHdpdGgKKyAgICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0
cnkgdG8gY29tcGlsZSBpdCBhcyBgUHV0QnlJZERpcmVjdGAKKyAgICAgICAgdXNpbmcgcHJvZmls
ZWQgaW5mb3JtYXRpb24gZnJvbSBMTEludCBhbmQgQmFzZWxpbmUgZXhlY3V0aW9uLiBJZiBpdAor
ICAgICAgICBpcyBub3QgcG9zc2libGUsIHdlIGVtaXQgdGhlIGBQdXRQcml2YXRlTmFtZWAgbm9k
ZS4gVGhpcyBub2RlIGRvZXNuJ3QKKyAgICAgICAgaGF2ZSBhbnkgb3B0aW1pemF0aW9uIGltcGxl
bWVudGVkIHlldCwgYW5kIGl0IGFsd2F5cyBkbyBhIHNsb3cgcGF0aAorICAgICAgICBjYWxsLiBU
aGUgY2FzZSB0aGF0IGRpc2FibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgcHV0X3ByaXZhdGVfbmFt
ZWAgYXMKKyAgICAgICAgYFB1dEJ5SWREaXJlY3RgIGlzIHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBl
dmFsdWF0aW9ucyBvZiB0aGUgc2FtZQorICAgICAgICBjbGFzcywgYnV0IHN1Y2ggcGF0dGVybiBt
aWdodCBub3QgYmUgY29tbW9uLiBJZiB0aGlzIGh5cG90aGVzaXMgc2hvd3MKKyAgICAgICAgdG8g
YmUgZmFsc2UsIHRoZXJlIGlzIHNwYWNlIHRvIG9wdGltaXplIGBQdXRQcml2YXRlTmFtZWAgaW4g
dGhlIGZ1dHVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnBy
b3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
UHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGly
ZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmlu
ZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJp
dmF0ZUZpZWxkUHV0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OmVj
bWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAg
ICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6
ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ByaXZhdGVGaWVsZFB1dEtpbmQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnByaXZhdGVGaWVsZFB1dEtpbmQpOgorICAgICAgICAqIGRmZy9ERkdO
b2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZH
OjpPcEluZm86Ok9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2
YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9y
L0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbklu
Zm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAg
KiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJ
ZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6
OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9w
cml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRl
X25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9w
dXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6
CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZh
dGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCk6Cisg
ICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSk6CisgICAgICAgIChKU0M6
OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzTm9uZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVGaWVsZFB1dEtpbmQ6OmlzU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6aXNEZWZpbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRL
aW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OlBy
aXZhdGVGaWVsZFB1dEtpbmQpOgorCiAyMDIwLTA3LTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW50cm9kdWNlIEpTQ1RFU1RfaGFyZFRpbWVv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMjU5MTA4NmViYWM3MjIw
NjZhODY0NDVmYWMyMTFkZWY4MDMwNWUwLi5kYmI1NjMxMWNhM2Q0YmE5OWE0MDE3ZDgxOGI2NTJl
NTc1N2IzNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDEsNyAr
NTQxLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAog
ICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
CiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNl
dC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTk2Niw2ICs5NjUsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0
aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25zTGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5o
CisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVO
YW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb21p
c2VUaW1lci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZDc0YzI1MjJlYTJi
ZTlkMTI2Yzg4ZmRiMjA5ODM3ZDlhNTJiNWYuLjIxMjk3MmQyNWU4OTRkZjA1NjQzYTA5ZGNkNTE1
ODg3NmMzM2Y0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUyLDcgKzEy
NTIsNiBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBh
dHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIw
MTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZh
dGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYg
LyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3
NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNjEsNiArMTI2MCw3IEBACiAJCTg2QUREMTQ1
MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFS
TXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERF
QTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4
NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3
Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9B
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUw
MDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNF
RTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDEyMCw4ICs0MTIwLDYgQEAKIAkJODY3MDRCODExMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5j
cHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQ
YXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIw
MEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYz
IC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0
MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4
MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0
aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00MTQxLDYgKzQxMzksOCBAQAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVF
QzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtp
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3
Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0
ZUZpZWxkUHV0S2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJB
MTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU0MSw2ICs3NTQxLDggQEAKIAkJCQkzN0M3
MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0Qz
QUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywK
IAkJCQlDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1
enplckFnZW50LmggKi8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVG
aWVsZFB1dEtpbmQuY3BwICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2
YXRlRmllbGRQdXRLaW5kLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFBy
aXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1F
eGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3Jh
bUV4ZWN1dGFibGUuaCAqLywKQEAgLTg0MTQsOCArODQxNiw2IEBACiAJCQkJMEY5MzMyOUExNENB
N0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzRE
MDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZB
QUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFG
RjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAv
KiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRl
ZFN0YXR1c2VzLmggKi8sCkBAIC0xMDEyNiw2ICsxMDEyNiw3IEBACiAJCQkJQ0UyMEJEMDcyMzdE
M0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0
aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAv
KiBQcmludGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUg
LyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVG
Mjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFF
RTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDE2Nyw3ICsxMDE2OCw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1
dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgy
MzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEzNGE2
NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li41MWNjNTM1NzUzODA1N2E5N2NkOWJmOTRl
MjY0NzNkNzc4MTM2NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjgsNyAr
MjY4LDYgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTMxLDYgKzkzMCw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJp
bmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3Bw
CiBydW50aW1lL09wdGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6
ZXJBZ2VudC5jcHAKK3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCiBydW50aW1lL1Byb21pc2VUaW1lci5jcHAKIHJ1bnRpbWUvUHJv
cGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggMjgwYTgyZThjNzljYWU5OTZhZTA4MDE1ZDc3NWY4Mjk4Nzk3
MjI5YS4uYjFiMmIwYTg4ZTcxZDcxMDg5ZDhlMGJhZTNkYmZjZjdiNTY2OTZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00NiwxMCAr
NDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywKICAgICA6UmVzdWx0VHlw
ZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQdXRLaW5kLAogICAgIDpQ
cm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCiAgICAgOlB1dEJ5
SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5cGUsCiAgICAgOlN0
cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzMsNiArNTczLDIwIEBAIG9wIDpnZXRf
cHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCiAg
ICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0S2luZDogUHJpdmF0ZUZp
ZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0cnVjdHVy
ZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxd
LAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3Ry
dWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAgICAgICAg
IGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OCw3ICs2MTIsNyBAQCBvcCA6cHV0X2J5X3Zh
bF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9m
aWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKaW5kZXggNzM2NmNiNDBiNjk5NjQ4Njc0MmRmMmVhZjRiYWJjZDA4Y2RhODM3MC4uZmNk
ZTQwNDljZDQ3NDA0MjEwNzRhMjA2YzZmMTczZDEzNzUzMDY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMjYsNiArMjI2
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3Rl
ciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvckdlbmVy
aWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBw
cm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQorICAg
IFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQogICAgIFVTRVMo
T3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9m
LCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk0LDYgKzM5NSw3IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9i
eV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9w
cml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2FzZSBv
cF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9w
ZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggMzcwN2Q0YTA2MjQ0N2ZjNjBmMTNhNDdiMzZlNGE0N2M5ZjY4NmFkNS4uMDBjZDI1ZmVjMGYw
YjE5ZjRiZjhmZDdjMDJmOGIxZWE2M2MyZDAyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOSw2ICs1MDksNyBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBwcm9m
aWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJvZmlsZSkKICAgICAgICAg
TElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0UHJpdmF0ZU5hbWUs
IHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAg
ICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTQwLDYgKzU0MSw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAg
ICBMSU5LKE9wUHV0QnlWYWwpCiAgICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAg
ICAgTElOSyhPcFB1dFByaXZhdGVOYW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAg
ICAgICAgTElOSyhPcE5ld0FycmF5V2l0aFNpemUpCkBAIC0xMTI4LDYgKzExMzAsMjUgQEAgdm9p
ZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtl
ZChvbGRTdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKG5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVy
ZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9s
ZFN0cnVjdHVyZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJv
cGVydHkuZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9
CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRT
dHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQor
ICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVj
dHVyZSkpCisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3
U3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjk0
LDYgKzEzMTUsMjIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMo
KQogICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAg
ICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVy
ZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAg
ICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAo
IXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAg
ICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVy
ZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVh
cmluZyBMTEludCBwdXRfcHJpdmF0ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zm
c2V0ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVh
cC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2
YjhhMGFhZTMuLmUwNWEyNTY0OGExM2IwNTk3MmY2NjRjMzdkZTA4Y2QzYzg5NDk1OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMjksOSArMjksOSBAQAogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJPcGNvZGVT
aXplLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb2Zp
bGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVk
ZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJT
eW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpA
QCAtMjU4LDQ2ICsyNTgsNiBAQCBzdHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsKICAg
ICB9CiB9OwogCi10ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxQdXRCeVZh
bEZsYWdzLCBzaXplPiB7Ci0gICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNp
emU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKLQotICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29s
ZWFucyBhbmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgotICAgIC8vICAgICAgICAgIGlzU3Ry
aWN0Ci0gICAgLy8gICAgICAgICAgICAgdgotICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGly
ZWN0Ci0gICAgLy8gICAgICAgICAgIF4KLSAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
IHswID0gTm9uZSwgMSA9IFB1dCwgMiA9IENyZWF0ZSB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19pc0RpcmVjdEJpdCA9IDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmlj
dEJpdCA9IDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NL
aW5kTWFzayA9IDEyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZFNoaWZ0ID0gMjsKLQotICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3Mp
Ci0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVGFyZ2V0
VHlwZSBjb252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi0gICAgewotICAgICAgICBhdXRvIGlz
RGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7Ci0gICAgICAg
IGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpOwotICAgICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihmbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOwotICAgICAgICBy
ZXR1cm4gKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5k
U2hpZnQpIHwgKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKLSAgICB7Ci0gICAgICAgIGF1
dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKLSAg
ICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RC
aXQpOwotICAgICAgICBhdXRvIGFjY2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ+KChncGkgJiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmRTaGlmdCk7Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/
IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICAgICAgcmV0dXJu
IGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lID8KLSAgICAgICAgICAgIGlz
RGlyZWN0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFs
RmxhZ3M6OmNyZWF0ZShlY21hTW9kZSkgOgotICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVs
ZChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNt
YU1vZGUpOwotICAgIH0KLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6
ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNp
emUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBG
aXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0g
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsKQEAgLTQyNyw0ICszODcsMjQg
QEAgc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRz
PFByaXZhdGVGaWVsZFB1dEtpbmQsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4g
eworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJv
b2wgY2hlY2soUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEJhc2U6OmNoZWNrKHB1dE1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHR5
cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVydChQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1v
ZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChwdXRNb2RlLnZhbHVlKCkp
OworICAgIH0KKworICAgIHN0YXRpYyBQcml2YXRlRmllbGRQdXRLaW5kIGNvbnZlcnQodHlwZW5h
bWUgQmFzZTo6VGFyZ2V0VHlwZSBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFByaXZh
dGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKEJhc2U6OmNvbnZlcnQocHV0TW9kZSkpOworICAgIH0K
K307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
OGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0MGE5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHV0
QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0gICAgQ29t
bWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0gICAgICAg
IG91dC5wcmludChjb21tYSwgIkRpcmVjdCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVs
ZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7Ci0g
ICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgIG91dC5wcmludChjb21t
YSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFiMzZjNjFjZTMwMmJmOWMyMzgyNTZhNzA1Njg3NjY3
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkVDTUFNb2RlLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWlu
dDhfdCB7Ci0gICAgTm9uZSwKLSAgICBQdXQsCi0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0
QnlWYWxGbGFncyB7Ci1wdWJsaWM6Ci0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdz
IGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5
X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYg
dGhlCi0gICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIg
c3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0K
LQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRl
RmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxG
bGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxk
KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3Mo
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBl
Y21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmU7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1
cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1
dDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0K
LXByaXZhdGU6Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBF
Q01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25l
KQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01B
TW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2VzcykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9l
Y21hTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQot
Y2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpT
Qzo6UHV0QnlWYWxGbGFncyk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA2ZjM1NzM4YjMxNjhjODhjNTE3YmZkNGUwZDUxNTUyM2ZmNmVlOTY3Li5mNTM1NjU1OTNi
ZTQzY2Q2MDUyNjBjYzUyZjZmODVkMTk3N2ZhN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYs
NiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5j
bHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRl
ICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJs
b2NrLmgiCkBAIC0yNzEyLDcgKzI3MTMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAg
ICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0
QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGly
ZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzM2LDEzICsyNzM3LDEzIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1
bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJp
dmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmll
bGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUo
KSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZh
bHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMDU4YzdjMjY2ZWQ2MjkxYzM4NDA4NDg0OTQyNTY3OGI2
MTEwZTQ5Zi4uY2VjYjdmZWZmYWM2MzQxM2NkMTliZTYyZTQ4NzE3NjBiZmJkMjg3NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaApAQCAtNDA3MSw2ICs0MDcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAg
ICAgIGNsb2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmM2YzYWZjZWNlODFlOTBjMTU2Y2IwMDM2MWYxNGRlYzIx
NjhhOTU5Li5kM2RhMTdkZWUyYTBiYmNlNjg0NDlkM2Q3MDA2NDFiM2Q3ZWM0Nzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAs
OSArNzAsOSBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bj
b2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUg
IlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5j
bHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTEyNjcsMTggKzEyNjcsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgotRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0ZWNv
ZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci19Ci0KLXRlbXBsYXRlPD4K
LUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpOwotfQotCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRh
YmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChieXRl
Y29kZUluZGV4KTsKQEAgLTYwNDcsNiArNjAzNSw2MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfcHJp
dmF0ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0
ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29k
ZS5tX3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc1B1dEJ5SWQgPSBmYWxzZTsK
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllcjsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgICAgIFB1dEJ5
SWRTdGF0dXMgcHV0QnlJZFN0YXR1czsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFs
SW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3Vy
cmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KCkpKS5ieVZhbEluZm87CisgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4g
dGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGJ5
VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFieVZhbEluZm8t
PnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQor
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBpbGVkQXNQdXRCeUlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlk
ZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmll
ci51aWQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAg
ICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50
LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCF1aWQtPmlzU3ltYm9sKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJ
bmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3JTdHViSW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
eVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29uc3Rl
eHByIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChjb21waWxlZEFz
UHV0QnlJZCkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG5l
eHRPcGNvZGVJbmRleCgpLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKQorICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhieXRlY29kZS5tX3B1dEtpbmQpLCBiYXNlLCBw
cm9wZXJ0eSwgdmFsdWUpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfcHJpdmF0
ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVy
dHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVmaW5lRGF0YVByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChi
eXRlY29kZS5tX2Jhc2UpOwpAQCAtODI2MCw3ICs4MzAyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhp
dEluZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAgICAg
ICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwg
dmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGVjbWFNb2RlKGJ5
dGVjb2RlKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlk
ZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdElu
ZGV4LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQ
dXRCeUlkKSB7CkBAIC04MjcxLDcgKzgzMTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQog
ICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51
bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRW
YXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5
VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVjbWFNb2RlKGJ5dGVjb2Rl
KSkpOworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZh
bERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5
dGVjb2RlLm1fZWNtYU1vZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlW
YWwgYW5kIFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIg
ZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IDkzNzZmMjNkYTkxY2U5MDIzODc0YzQwZjNiMDI2MzhhY2NmMmY0ZGIuLmY4Nzc2NGJiMDY4
NWU0NmJjODcyMmE1ZmE5ZTRjODNlMjU4Y2Y4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5Miw2ICsyOTIsNyBAQCBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbjoKICAgICBjYXNl
IG9wX3N1cGVyX3NhbXBsZXJfZW5kOgogICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZToKKyAg
ICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlQW5k
SW5saW5lOwogCiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiAvLyBEb24ndCBpbmxpbmUgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvIGNvcHkgc3RyaW5nIHRhYmxlcyBpbiB0aGUgY29uY3VycmVu
dCBKSVQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDBk
ZGZkNTQxMzE4NGRmNzQzNDAwNWUyZGY3ZmE4YjE1MzM4YTY0ZDguLjg0YmMxODAzNTY0YjliZTYw
NDkyM2EzMDhkZGIwYjc0ZjU3ZDI1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC02NjUsNiArNjY1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoK
ICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAppbmRleCBlZTU4NzE0ZjUzZWJjYTA4ZGQ4NzY0M2JhM2Y0NDU3YTJkNjgxOTMxLi5iMTNk
MGViY2ZhYTU3ZTM3YmJlNGI1Yjc2ZDBkZDEzNTkyNDc3NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAg
ICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAppbmRleCA0Zjk2ZjIwMGUxYzhhNjgxOTg2MmM1M2RjYTQ4NTdjNjI4
ZTFkMDk4Li41YzdmNDI4ZDNiYzc0MGU1Mjg3NTM0MGEwMDA0MDc4OWI1NmFhNmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI3NDcsNiArMjc0
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJvdHRv
bVZhbHVlOgogICAgICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZToKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxX
aXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCBkZDBkMTJkYWY4ZDlhMTljNDE4YTBkYzNkNDkxY2NiNzAwNDRh
ZWY3Li5mZjJmOTViZjYxZDZmODEyODQ5MTRmZDQ5M2NiZDM5ZDQyOTEzOThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdldEJ5
SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRz
LmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRW
YXJpYW50LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBlTG9j
YXRpb24uaCIKQEAgLTIyODUsNiArMjI4NiwyMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAgICAgCisgICAgYm9vbCBoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAg
IGlmIChvcCgpID09IFB1dFByaXZhdGVOYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHBy
aXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1ByaXZhdGVGaWVs
ZFB1dEtpbmQoKSk7CisgICAgICAgIGlmIChvcCgpID09IFB1dFByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVp
bnQ4X3Q+KCkpOworICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpOworICAgIH0K
KwogICAgIGJvb2wgaGFzQXJpdGhNb2RlKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDZhYzU5ZDdjYWQ3
ZWQ0ZDBiOWE2ZTI2MjYyMGJjZWU5MDI4NTY4NGEuLmY0ZDFiZGQ5ZTgwNjY1ZWY4OTljMzcwODFi
ODc3ZjY2NWZiNDFjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
QEAgLTIwOSw2ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oUHV0QnlWYWxEaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3Mp
IFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1Zh
ckFyZ3MpIFwKKyAgICBtYWNybyhQdXRQcml2YXRlTmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1
c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wSW5mby5oCmluZGV4IDBlNGMzMWJmMGQ3ZTU4NThiYmRiNzQ0MjMwYTYzNjdjNGZh
MGI2MzkuLjQzMzUyNjU5YjJhZTBhYzM1OTdkOWQ1ZGE4ODkwZWU5OGE4NDQyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJl
LmgiCiAjaW5jbHVkZSAiSGVhcENlbGwuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQp
CkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBPcEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5mbyhP
cGVyYW5kIG9wKSA6IG1fdmFsdWUob3AuYXNCaXRzKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5m
byhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1
aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRzKCkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8o
RUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KKyAgICBl
eHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0
S2luZC52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGV4cGxp
Y2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGY3ZGJjMGM0ODE4
N2IxOWQ4YzljMDY1MjA1YjBlZGYzNDJkOWI2OGMuLjdlNGMxMDUyYTA3ZDY4MmNlY2IyZTZhZDQ4
ZWQ4MWM0OTJjNmUzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMzczLDYgKzEzNzMs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNh
c2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNl
IFB1dFByaXZhdGVOYW1lOgogICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNh
c2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjZkYTJiNzY4
ZmNjYjc5MmUxZGI1Njk1YjdhZGQ4OGMyYjU1NDY3MC4uMzYyY2E3MmU0NTRhNDdkNjYyM2MxMjNl
ZWE5ODllZDU4MGMzZGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKQEAgLTUyNSw2ICs1MjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwog
ICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgog
ICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBj
YXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6
CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZmM0MTFlMzYzY2EyYmYyNjg4ODY5ZTBhMWQ0NDIxYjU0
Y2NhM2JlMy4uYzVjMjJjNjBkYWY3NmUwNjE5MGIxMWFkODk3Y2QzMTNkZWZiNDJhNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM1
MjEsNiArMzUyMSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRo
VGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2Rl
KQoreworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVP
cGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVS
ZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5VmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUo
KSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZh
dGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9w
ZXJ0eVJlZ3MsIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbTMy
KEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDM4NCw3ICsxNDQwMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1v
ZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCA2NjI1ZDYzOTZhNWVlZGVhZmVkNTZjNjQwZmE4NzlmYzRl
MTFjY2E3Li41Y2UzODViMTI2ODg1NTJkNGE2YTI1ODAwNzNiZTg4M2IwNGYzMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzYwLDYg
KzEzNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0
cmluZyhOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAg
ICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRnZSYgY2hp
bGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlW
YWxXaXRoVGhpcyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUdldEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggM2Q1NjcxZDUyN2JjODFmYjNkY2FhZWY1NWU4NTRjN2Y3MTI4M2FjMC4u
Mzc3NDhiMzc5NTU1OWVjZWRiMWE1MjQ4OTFkOTcxNWFkZGE4MmY5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0y
NTk2LDYgKzI1OTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7Cisg
ICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNh
c2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOTlhOGNkOTM5MmZiMTBiNGM4ZTQyYmI1MDc1YTM5
NjIzN2I3Y2VkOC4uMWJkMjcyNDg4ZmNjMzljOTY0ZTM5ZDlmNDk2ZjRkNDRiNmViMmNmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0yOTE5LDYgKzI5MTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1l
OiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgog
ICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDUyYTBhYzFlYWE4MDkwYjc0ZDQ1MjZjYjVmMmFhMjdm
MzVmNWE0MDkuLjgxZmU1ZWQ4NTM4MGQyNzI3YTkzMGJlNTk3ZjNlMDQ1MGE4OTRhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Myw2
ICszOTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNl
IE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCBlYzdhNTQ2YTExZTkyZWE2NDFkOTgwNzkwMTc4NDdkOWM0Zjhm
MzNmLi43ZmM5OGNiMTY3YWM2ZTlkNDhjMWY5ZWY0NWNlYzM0ZjU1YmMwOTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDE4LDYgKzEw
MTgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAg
ICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5h
bWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAg
ICAgIGNhc2UgQXRvbWljc0FuZDoKICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hhbmdl
OgpAQCAtMzkyNiw2ICszOTI5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAg
fQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKKyAgICB7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2Vu
ZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJ
bnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsK
KyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CkBAIC00MjE0LDcgKzQyMjgsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSks
IEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVy
YXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRv
bmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5k
ZXggZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNS4uNzMxNzEwMDk2Y2Yz
ZTI0OThhZTQ1ZGRhMjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKQEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1
dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMTk0OTZhOTliMTc1YjU5ZTAxMGM0
NGVjNDc5YWZlOWQyYzg4MjU0MC4uMjUzYTNkYTlhZGZhMmE2OWI1MTdlYzY3OWU2NzNlMzJmMmQx
ZTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2
YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg1LDYgKzU4Niw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRf
YnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9i
eV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05MDAsNyArOTAyLDEyIEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1w
KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRl
eEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAg
ICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGls
YXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0
Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAg
ICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+KCk7CisgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNT
ZXQoKSkKKyAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihi
eVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRv
bmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVU
YXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJu
YWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAg
ICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENv
bXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggNjY2ZTBlZDRjOGEwOTM0NGY0YjRmZjQyNTcwZTY3ZDY5NWNiMTc0OS4uYTg1NDkxZDZjZDBl
ZWZjMmU0ZDc2NzZlNzlhMzVkZTlhMThkNjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC0xNjEsNiArMTYxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0K
IAorICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBu
b3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhi
eVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAg
ICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9u
ZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0
SG90UGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZv
KiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtNDA2LDcg
KzQxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5
cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVG
aWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZv
ciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmll
ckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwMyw2ICs2MTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKik7CkBAIC02ODMsNiArNjkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9w
dXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRl
eCAyMzY4MzA0NWYxZmQxZjZhYTQ1ZTYxZDYzODlhZWYxZmMyODIwMWU2Li43ZjdlNDQ5NWI2MTMz
NzljNWExNDJmNTM0YTI4NTMxMTNiNWIwMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTM2LDExICsxMzYs
MTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5l
cmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBw
dXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisg
ICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJz
LCBiYXNlLCB2YWx1ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAs
IG1fcHV0S2luZChwdXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChw
cml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkUHV0S2luZChw
cml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xl
YXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVy
YXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsK
LSAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSkgewog
ICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAgICAgICAgIEFTU0VSVChtX2Vj
bWFNb2RlLmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgaWYgKG1fcHJpdmF0
ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
aW5kZXggNzMyOWQ2YjczODE0ZDZjNGJhNTUyYTU4OTNlNzJiMDIxZTZhNTEyMC4uMmRmZjVmZDQ3
YTc4OGE2NDVjZjljMjQ3Yzk3YjU4Mjc1MDU4Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNs
dWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsx
MzAsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJh
dG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2Vj
bWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAgICAgLCBtX3ByaXZhdGVG
aWVsZFB1dEtpbmQoUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKQogICAgIHsgfQogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRj
aCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHZv
aWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0
NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQ
dXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIG1fcHJpdmF0ZUZpZWxkUHV0
S2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5k
ZXggZDUzZTY5NzdkMzlkNzU5ZTY3NDEyZmQ5YWQxYjllNjc4MmI5N2QzMS4uOTE1MjY2MGJmNGUy
ZGRlZWU3M2QwNTU1YTRhOGRhNDBkOWQzNmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0KIAogdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9w
UHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAgICByZXR1cm4gb3AubV9m
bGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxk
UHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsK
KyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwogfQogCiB0ZW1wbGF0ZTw+
Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNf
SU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kPE9wUHV0
UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxh
Z3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBvcC5tX3B1dEtpbmQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggYmMzY2NjODAyMzVkNzM5Y2QxYWY1MjY5YzFlNmFiMTVmZWQ3NDg5
NS4uZGFhYjM4Mzg1M2VlOTRlZWIyZjQ1OWJlMWRjOTRkYTJjNmUxMWE0OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMTA1LDcgKzExMDUsNiBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFz
ZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAotCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTExMTksNiArMTExOCwxMzIgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3Qo
YmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6YXRpb25S
ZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKworICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50
aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgp
KSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0
ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgeworICAgICAgICAgICAgICAg
IGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgeworICAgICAg
ICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZh
dGVOYW1lPih2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgRGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAgICAg
ICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6
ZWQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2Vl
bSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29k
ZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6
Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpT
ZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0aCBtb3JlIHRoYW4gMTAg
dGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQorICAgICAgICAvLyBuZXZl
ciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRo
IG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIHB1
dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAgICAvLyBXZSBjb3VudCB1
cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZlVXAuCisgICAgICAgIGlm
ICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgIH0KKworICAgIGlm
IChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKKyAg
ICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAgICAgIGJ5VmFsSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgcHV0S2luZC5pc0RlZmluZSgp
ID8gIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZh
dGVOYW1lR2VuZXJpYyk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIAorICAg
IC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhp
Y2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3Qg
bW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VP
YmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAg
ICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5wdXRQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30K
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVy
dHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2Fu
IG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQg
Y2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBp
c1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2Rl
KTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgc2NvcGUucmVsZWFz
ZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGlu
IGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlz
IGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAg
IGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDRjMjIwNTMwYWI0
ZGU1YjI2ZDdkOWFkM2QzYjgyZTNiNGRiOTdkOWEuLjNmNGFhYTU5OWIwZTc2MWRhNjkyMzIyMzY2
ZmYzOTRjNDA4MWViZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCkBAIC0yOCw3ICsyOCw5IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVE1h
dGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1
ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgorCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KIApAQCAtMTkzLDEwICsxOTUs
MTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNN
QU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2Rl
KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0
ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkxpbmtDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExp
bmtJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3ZTA5NDQyMDkyMjU2YzhlYWY1NzhkYTdiNGUxOTUy
NGMwMWVkOWNiLi44NGU3ZGFiZWZlMzUwYzlkYmE3NmYxZTY0MmIwZDhlNWIwYTM3MWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBAIC0y
NzUsNyArMjc2LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBw
dXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTog
VXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8g
cmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsK
LSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNt
YU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3Qp
CkBAIC0zMjgsNiArMzI5LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZh
bEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5
VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFi
bGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVs
IGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgY29uc3RydWN0
b3IgZm9yIEJ5VmFsQ29tcGlsYXRpb25JbmZvCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5h
cHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZh
c3RQYXRoSm1wLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBCeVZhbElu
Zm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9u
SW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRl
Y29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVs
IHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAg
R1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7
CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0
eUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1
ZUdQUik7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIo
cHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxD
b21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBj
YWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdl
dHRlckJ5SWQ+KCk7CkBAIC02NTksNyArNzAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAotICAgICAgICBk
aXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNv
ZGUpKTsKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRQ
dXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzE3LDcgKzEzNjAs
NyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9w
IGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQ
dXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMTQyOCw3ICsxNDcxLDcgQEAgdGVtcGxh
dGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbERpcmVjdD4oY29u
c3QgQ29uY3VycmVudEpTTG8KIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYm
IE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtpbmQgPT0gTm90
RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAgQVNTRVJUKChw
dXRLaW5kID09IERpcmVjdCAmJiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0
IHx8IE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKSkgfHwgKHB1dEtpbmQgPT0g
Tm90RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDUwLDE4ICsxNDkzLDMx
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRj
aEJ1ZmZlciwgcGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25z
dGV4cHIgeworICAgICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0
KQorICAgICAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsX2RpcmVjdCI7CisgICAgICAgIGlmIChP
cDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAi
cHV0X3ByaXZhdGVfbmFtZSI7CisgICAgICAgIHJldHVybiAicHV0X2J5X3ZhbCI7CisgICAgfTsK
KwogICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAog
ICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAot
ICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUg
JyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gRGlyZWN0KSA/
ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0
cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAgICAg
ICAgIkJhc2VsaW5lICVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAl
cywgcmV0dXJuIHBvaW50ICVwIiwgb3Bjb2RlTmFtZSgpLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0
ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVz
cy52YWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAK
KyAgICBhdXRvIGdlbmVyaWNGdW5jdGlvbiA9IHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIGlm
IGNvbnN0ZXhwciAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUpCisgICAgICAg
IGdlbmVyaWNGdW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8gb3BlcmF0
aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5l
cmljOworCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5k
ZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihw
dXRLaW5kID09IERpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJh
dGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChD
b2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+
KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihnZW5lcmljRnVu
Y3Rpb24pKTsKIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3Ro
ZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAotLy8gc28gd2UgbGlzdCBv
ZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KKy8vIHNvIHdl
IGxpc3Qgb2ZmIHRoZSB0aHJlZSBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4K
IHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9w
UHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJs
ZUlkZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxX
aXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0
ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7Cit0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPihCeVZhbElu
Zm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAog
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMwNDdkMmIxMzllNmEyYjVhYWQ1
MmYzNGVmNzU4ZGY5NDMwYWFlYjUuLjc3Y2VlOGI3NzJhNjExYzc1MGQ3NWI2ZjdjOGRiMWQzZDNi
MDhjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9
IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVtcCBm
YXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEpt
cCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogQWRk
IGEgbmV3IGNvbnN0cnVjdG9yIGZvciBCeVZhbENvbXBpbGF0aW9uSW5mbworICAgIG1fYnlWYWxD
b21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9i
eXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+
KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZh
bEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5i
eVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9w
dXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0
aCA9IGxhYmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOwor
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJl
Z3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVy
dHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7Cisg
ICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1t
MzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlW
YWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3Mg
PSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJl
bnRJbnN0cnVjdGlvbik7CkBAIC02NjQsNyArNzA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAog
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1Qx
LCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVj
dCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29k
ZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0
ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5k
ZXggYzUyM2U4YTYwMDZkZGM1M2QyNTk5YTRkMjRjNmU5NGI1NGRjYWRiZC4uOGQ3OWNhNzE1ZDI1
OTZjOWFhNGZkMzZiZTI3NWI4MWJmYTRkNTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU4LDkgKzU4LDkg
QEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUg
IlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNs
dWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNs
dWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDE2YWMxODAxOGIz
NGMxMmE5NTUzZTBiMzkzMTFjMDVhMzc1NTQ0ZjMuLmVlZTJhMzJkYTZjMGMwOTM5YjgwMTUwNjEx
MjE2NDI5ODkwN2U5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMTE3Nyw0OCArMTE3NywxMjYgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
YmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBi
eXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RN
b2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90
VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0
LmlzRG91YmxlKCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0g
ICAgICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwot
ICAgICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihzdWJzY3JpcHRBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBz
dWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAg
ICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRB
c1VJbnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VO
RCgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBp
ZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93
U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChw
cm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgp
LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1
dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQ
cml2YXRlRmllbGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFn
cy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmlu
ZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5U
X0VORCgpOyAgICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGly
ZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAg
IEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJv
cGVydHkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRz
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8g
YW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJv
b2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChi
YXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgaWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBi
YXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5k
LmlzU2V0KCkpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYm
IGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAg
ICAgICAgJiYgc3Vic2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0
cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAg
ICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7Cisg
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUodm0pOworICAgICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNs
b3Q6Ok5ld1Byb3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgp
OworCisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVBy
b3RvKGEsIGIpKSB7CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBv
bHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0
ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGIt
PnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwg
U3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
U3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwor
ICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEu
bV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9
IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBi
YXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJh
c2UoKSkgeworICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6
TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3Ry
dWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0
dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5J
bnZhbGlkYXRlZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJv
dG8gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNo
YWluICYmICFzYXdQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQob2xkU3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVy
ZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJs
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBhc3NlcnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0
IHRvIGRpc2FibGUgY2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlv
biB0aGVuIHN0b3JlIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9u
ZworICAgICAgICAgICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJ
ZiB3ZSByZWlmeSBhIGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8v
IHRvIGRpc2FibGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBs
YWNlIElDIGRvZXMgbm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhl
c2UgdHlwZXMgb2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAg
ICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIG5ld1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBz
bG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5p
ZCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZt
LCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lO
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4
IDlhNzVmNjVjZWZhZjc5ZTUyMDk4ZTQ5NmRjMWQwNDA2YjIyMjZmMWEuLjMxNzBlNzY3OWQ3MGFl
ZmZkNDgwMTU2MTU5OWI5NjYzNmQyZTk3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5k
ZXggNmFkYTJiNTE0YjljYzc1Nzk0NzNmYjI2NTdjNzc0Y2EwZWM5MTgyYi4uYmM5YzM0OTAwZDY5
YjhjMzk2OWUxZmVkY2I2OGM0MWY0NzFkYTQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTU4OSw2
ICs1ODksMTMgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxv
YWRBZnRlclNsb3dQYXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVy
T25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVy
U2xvd1BhdGgpCisgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUp
CisgICAgd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0
aCkKKy53cml0ZUJhcnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFu
ZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0Miwg
LndyaXRlQmFycmllckRvbmUpCkBAIC0xNjIxLDYgKzE2MjgsNDggQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXpl
LCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZh
dGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNs
b3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1l
dGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1
dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMs
IHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2
ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVy
ZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXRO
b3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0K
KyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBt
YWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFk
YXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldCht
X2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MSwgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1
dE5vdFRyYW5zaXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0
MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZh
dGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJp
dmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2
YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzZjY3NDZjMzcwZjdkZGY2NDhj
Mjg4NmRiMDJlNzhjZDNhODU4NmZhLi40OTNjNGQ3ODM5N2I4MjEzMzUwMTZiZjQ5NTFiMjdhZDI4
YWNkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTcyMCw2ICsxNzIwLDQ5IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9w
X3B1dF9wcml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
KQorICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bChzaXplLCB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwg
dDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJl
SURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQ
dXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRh
OjptX3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1l
U2xvdworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0
IGJhc2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRh
ZGF0YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0
dXJlSURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0
b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3Bl
cmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVs
b2FkIG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAj
IFJlbG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90
VHJhbnNpdGlvbjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3
aGljaCBob2xkcyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6
TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDAsIHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBt
X2Jhc2UsIG1fdmFsdWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAg
ICBkaXNwYXRjaCgpCitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2Rl
TmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWRm
Yjc5ZmRkYTgxODNjYTkxMzE1YzUyMDY0NzBkMTQyMzEyOTQ1NC4uMGYzNzU2ZmRmYjMyYmMzZDll
N2Y2YjYzZmVmNDEzMjFjYzY3ZTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC01NjUsNyArNTY1LDcgQEAgZW51bSBFeHBlcmltZW50YWxPcHRp
b25GbGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxfT1BUSU9O
KHYpIFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgTExJbnRBbmRCYXNlbGluZU9ubHks
ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYodXNlUHJp
dmF0ZUNsYXNzRmllbGRzLCBTdXBwb3J0c0RGRyB8IFN1cHBvcnRzRlRMLCAiaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKIAogY29uc3RleHByIHNpemVfdCBjb3VudE51
bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMTIzNzdhOWIxM2U5
MWJmZjNjYTA3MmQyZDM3OTA2ZjllNmNiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcApAQCAtMCwwICsxLDQy
IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5o
IgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2
b2lkIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBpZiAoaXNTZXQoKSkKKyAgICAgICAgb3V0LnByaW50KCJTZXQiKTsKKyAgICBlbHNlCisg
ICAgICAgIG91dC5wcmludCgiRGVmaW5lIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZiY2RjNGNhMzA0OGVjN2RhMDFkYmEwZDBhYWZjODRiYjU2NzUyZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgUHJpbnRTdHJlYW07Cit9OworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IFByaXZhdGVGaWVsZFB1dEtpbmQgeworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBOb25l
ID0gMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgU2V0ID0gMTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgRGVmaW5lID0gMjsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBmcm9tQnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJu
IFByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZh
dGVGaWVsZFB1dEtpbmQgbm9uZSgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoTm9uZSk7
IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgc2V0KCkgeyByZXR1
cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChTZXQpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2
YXRlRmllbGRQdXRLaW5kIGRlZmluZSgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoRGVm
aW5lKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgPT0gTm9uZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NldCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUgPT0gU2V0OyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVm
aW5lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBEZWZpbmU7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lk
IGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0ZXhw
ciBQcml2YXRlRmllbGRQdXRLaW5kKHVpbnQ4X3QgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09IE5vbmUgfHwgbV92YWx1ZSA9
PSBTZXQgfHwgbV92YWx1ZSA9PSBEZWZpbmUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4
X3QgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGViZTI0MzRhNmRmMTMwYTkzYTQ1ODFk
YzRkZDYzNDczYjc0MTc5NzYuLmVlMGFmZDI2ZGViODNiYWY3MmQxZjE5NWY4OTRjODAxODk0Y2Q4
ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMC0wNy0xNyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0pTQ11bRVNOZXh0XSBDcmVhdGUgYSBuZXcgb3BfY29kZSB0byBoYW5k
bGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBuZXcgb3B0aW9uIHRvIHJ1biB0ZXN0cyB3
aXRob3V0IERGRyBKSVQuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3Rz
OgorCiAyMDIwLTA3LTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gSW50cm9kdWNlIEpTQ1RFU1RfaGFyZFRpbWVvdXQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzCmluZGV4IDNkZDY0YTkxNTk4MzQ5Nzc3ZTdmOWVlMDI4ODJiMzFkNzM4MzU1
NWQuLjgzMjc3OWUzMmUwZmYxZDhmMzQyNmMwNjM1MmU5OGM5NDllNTM5MjcgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjkzLDYgKzY5MywxMCBAQCBkZWYgcnVuTm9KSVQoKm9w
dGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oIm5vLWppdCIsICItLXVzZUpJVD1m
YWxzZSIsICpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiBlbmQKIAorZGVmIHJ1bk5vREZH
KCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJuby1kZmciLCAiLS11c2VE
RkdKSVQ9ZmFsc2UiLCAqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorZW5kCisKIGRlZiBy
dW5Ob0xMSW50KCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgaWYgJGppdFRlc3Rz
CiAgICAgICAgIHJ1bigibm8tbGxpbnQiLCAiLS11c2VMTEludD1mYWxzZSIsICpvcHRpb25hbFRl
c3RTcGVjaWZpY09wdGlvbnMpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDMwZGJmYWM1OGM2Mjk5OWU1ZGIxZjc4MDZlMTM5ODZmZGU0Yjcw
MGYuLmU2MmFiMDc2NDJiMzJhYWE0NTM1MWQyZjY4NTU1ZDNiZTYzMmViMWQgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMjAtMDctMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wX2NvZGUgdG8gaGFuZGxlIHByaXZhdGUg
ZmllbGRzIHN0b3JlL2RlZmluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEzMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRqdXN0aW5nIHRlc3RzIHRoYXQgZW1pdCBgZ2V0X3ByaXZhdGVfbmFtZWAg
dG8gYXZvaWQgZXhlY3V0aW9uIGluCisgICAgICAgIEZUTC9ERkcuCisKKyAgICAgICAgKiBzdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzOgorICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanM6CisgICAgICAgICogc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qczoK
KyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25z
LmpzOgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1s
aW5lLmpzOgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpzOgor
ICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLmpzOgorICAgICAgICAqIHN0cmVzcy9v
cHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanM6CisgICAgICAgICogc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6CisgICAgICAgICogc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtb3NyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50
aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA3LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlIG11c3QgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbiBj
YWxsaW5nIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzCmluZGV4IDli
NTNmNmIyMzEwN2RkYWEyYjQ1YmMzZjA1OGVhYmYxMWNmMDE5M2EuLjE2N2JiNDk0NmU0Njg1NTE1
ZjYzODJlNDAzZjM1ZjBiMWYyZGVkYzggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUuanMKQEAgLTEsNCArMSw0
IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9A
IHJ1bk5vREZHKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKIAogbGV0IGFzc2VydCA9IE9i
amVjdC5hc3NpZ24oCiAgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcwppbmRleCA2NDJj
YzBmZjkyZDZiYWM5Yzg0ZDkwNjk0MzRmM2I3N2Q3ZGY1YjIyLi5hNzVmMjgwODc2N2JmNjRiMjcz
NmFmN2NhYmM2OTdlMjQ0NWFlM2QyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1mcmVlemUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtZnJlZXplLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0RGRygiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9MSIpCiAKIGxldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAogICBmdW5jdGlvbiBh
c3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0
LW9mLWxpbmUuanMKaW5kZXggNTJkYjhiMTZhZTBkNWNiN2YzZjU1ODUyN2U0MDBlYjUyMmMxYjM2
MS4uZDMwYzBkYTZmOTI4NGE4YmYyMGZhNTdmZTlmOTcyMWM1ZDFjOTcyMyAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91
dC1vZi1saW5lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXBy
ZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9ERkcoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQogCiBsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigK
ICAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgewpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpz
CmluZGV4IGQzNjA5NzI3ODE0ZmM2MDVlMTA0YzY2NGQ2ZTNlNjBlMmQ0YzVjMzIuLmI0YmUwZDA5
ODRhNTY5MmJjMjQzNzM3M2Q5NGI4ZTM1NTE2NTI4ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanMKQEAg
LTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQorLy9AIHJ1bk5vREZHKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKIAogbGV0IGFz
c2VydCA9IE9iamVjdC5hc3NpZ24oCiAgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0g
IiIpIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNl
YWwtb3V0LW9mLWxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1z
ZWFsLW91dC1vZi1saW5lLmpzCmluZGV4IDc2MWIzMGU2MmUyODM5YWQ0NzUyMzFmMzdjYTRkZmM1
MTE2MTBkNTQuLjczNjRiMDRhODQxYjEzZWU4OWFhYzA0YTdiYjVkY2MxZWQ1ZTFkZjQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0LW9mLWxp
bmUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQt
b2YtbGluZS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9ERkcoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQogCiBsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKICAgZnVuY3Rpb24gYXNzZXJ0KGV4
cHIsIG1lc3NhZ2UgPSAiIikgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtc2VhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LXNlYWwuanMKaW5kZXggMDgzZTdhYjM1ZDdjMTRhNmM3NjkxMjYyNmNmZDEyODE3YzVhMGIwOS4u
NjgyZDMzNDYwZDNhY2JkYzhkMzBkZDE0ODNjOWY0YjUwYjY1MDhkNCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0RGRygi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCiAKIGxldCBhc3NlcnQgPSBPYmplY3QuYXNzaWdu
KAogICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXBy
aXZhdGUtbmFtZS5qcwppbmRleCA2M2Y0YTI1ZTI0Y2IwYTgxZmM4YTY1MjI0NjJhZmVmMWE5NDFh
ZWJiLi4xZjY0ZTM2YmRlODI1MzkxMjc2MDZiMmZhMjRiMzMxMTI1NjFiODRmIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2dldC1wcml2YXRlLW5hbWUuanMKQEAgLTEsNCArMSw0IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vREZHKCItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz0xIikKIAogLy8gR2V0UHJpdmF0ZU5hbWUgc2hvdWxkIHRocm93IHdoZW4gdGhl
IHJlY2VpdmVyIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVlc3RlZCBwcml2YXRlIHByb3BlcnR5CiBs
ZXQgaSwgdGhyZXcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFs
LWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcyBiL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFs
LWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcwppbmRleCA4NDJjZjEyYjY0YTE2NDMwMmVk
MjdmNWI5MWUwNzU0NDcxZTExN2U2Li5jYjkyZTIyODQ1Y2ZlMzZjMmFjOThhZjI0MWMxMTQ2YThi
ODk2ZjIyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQt
cHJpdmF0ZS1maWVsZHMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmct
YW5kLXByaXZhdGUtZmllbGRzLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCBydW5Ob0RGRygiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCiAKIGxldCBhc3NlcnQgPSB7CiAgICAgc2FtZVZhbHVlOiAo
YSwgZSkgPT4gewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3Qt
YWRkcHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZh
dGUuanMKaW5kZXggOGM0ZTRkMjI1NDAzY2NkNWZhZTQwNDlmZGQ1Njg3OTQ1NWUzY2UwYi4uNDZm
MjQ4YzJiNmIwYzdhZjU2MGQwYTgzZjRhMjk0NDI3ZjA2MTJmZCAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0RG
RygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCiAKIC8vIFByaXZhdGVGaWVsZCAiQ3JlYXRl
IiBhY2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0
ZU5hbWUuCiBsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZiZGI5OWE1NmVjNGFlMTViNDU0
ZDNkZDYxMGVkNDU3N2M1YTg3YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKGR5bmFtaWNQcm9wZXJ0
eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAK
KyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNbZHluYW1pY1Byb3BlcnR5XSA9IGR5
bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisg
ICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShj
bGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
ICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJvcGVydHknICsgaSk7CisgICAgbGV0
IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTIwZGU5N2Zj
NTg4ODQ1MWUwNzM3OTY2NWE0M2NjYzU3YTI5ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCkBAIC0wLDAgKzEsNDMg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAg
IGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUg
KyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbiAo
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9y
KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGFzc2VydC5zYW1lVmFsdWUo
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbiwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2xl
dCBzaG91bGRTdG9yZSA9IGZhbHNlOworCitmdW5jdGlvbiBmb28oKSB7CisgIGNsYXNzIEMgewor
ICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgICNmb287CisKKyAgICBpbml0KCkgeworICAg
ICAgaWYgKHNob3VsZFN0b3JlKQorICAgICAgICB0aGlzLiNmb28gPSAxMjsKKyAgICB9CisgIH0K
KworICByZXR1cm4gbmV3IEMoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICBzaG91bGRTdG9yZSA9
IHRydWU7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAg
Zm9vKCk7CisgICAgfSk7CisgIH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0KK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFjZmY2N2I3ZjBkMzQzMWZi
YzU0Zjc0Y2YyNTIzZDQxNmExZjNhYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhp
cy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAg
ICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQor
CisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisg
ICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citu
b0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNl
dEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdm
b28nICsgaSk7Cit9CisKKworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMTYxMDkyZjQyNTA5MmY1ZTY3N2RmYzM1ZjdiMTYxZjIyYTI4MjA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhp
Yy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRo
aXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAg
ICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0K
KworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKwor
ICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQor
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjb3VudCA9IGk7Cisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
dGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmJlZDk1NDFjMDRjMmZiNTQ5NzcyYWQ2NTVmNTVhODM0ZjE5NDE1OQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wu
anMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworY2xhc3Mg
QyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0
aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRl
bnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJl
bnQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmFkYmY5MDIwNTAwMzc0Y2FhMTNkN2QzZjEz
NzFhOWMzYTY2YWYwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oKSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0RmllbGQo
dikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAg
Z2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9Jbmxp
bmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30K
K25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigp
OworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMu
c2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404951</attachid>
            <date>2020-07-22 12:49:41 -0700</date>
            <delta_ts>2020-07-23 13:56:34 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>bug-213372-20200722164921.patch</filename>
            <type>text/plain</type>
            <size>121997</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTQyMDMxYjc3Y2RkMGFlM2YzYzk0MGRkNGM2M2EwZmI3NWE1NGVjLi43ODgyNWM2NzNiMDFjNDBh
YzUxZGEwNDI0ZjM4OTZiZDU2Mjk2Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTkgQEAKKzIwMjAtMDctMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMsIGluY2x1ZGluZyBMTEludC4KKyAgICAgICAgSXQgaXMgYWxzbyBhZGRpbmcgYSBuZXcg
REZHIG5vZGUgYFB1dFByaXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBj
YXNlIG9mIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQor
ICAgICAgICBgcHV0X3ByaXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBh
cmUgdXNpbmcgd2l0aAorICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRy
eSB0byBjb21waWxlIGl0IGFzIGBQdXRCeUlkRGlyZWN0YAorICAgICAgICB1c2luZyBwcm9maWxl
ZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0Cisg
ICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lYCBub2Rl
LiBUaGlzIG5vZGUgZG9lc24ndAorICAgICAgICBoYXZlIGFueSBvcHRpbWl6YXRpb24gaW1wbGVt
ZW50ZWQgeWV0LCBhbmQgaXQgYWx3YXlzIGRvIGEgc2xvdyBwYXRoCisgICAgICAgIGNhbGwuIFRo
ZSBjYXNlIHRoYXQgZGlzYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBwdXRfcHJpdmF0ZV9uYW1l
YCBhcworICAgICAgICBgUHV0QnlJZERpcmVjdGAgaXMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGV2
YWx1YXRpb25zIG9mIHRoZSBzYW1lCisgICAgICAgIGNsYXNzLCBidXQgc3VjaCBwYXR0ZXJuIG1p
Z2h0IG5vdCBiZSBjb21tb24uIElmIHRoaXMgaHlwb3RoZXNpcyBzaG93cworICAgICAgICB0byBi
ZSBmYWxzZSwgdGhlcmUgaXMgc3BhY2UgdG8gb3B0aW1pemUgYFB1dFByaXZhdGVOYW1lYCBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4
SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJv
cGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5l
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2
YXRlRmllbGRQdXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6UHV0QnlJZERpcmVjdERhdGE6OlB1dEJ5SWREaXJlY3REYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpQdXRCeUlkRGlyZWN0RGF0YTo6YXNXb3JkKToKKyAgICAgICAgKEpTQzo6REZHOjpQdXRC
eUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICog
Z2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21w
aWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVO
YW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNO
b25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIw
MjAtMDctMjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBs
aWZ5IERpc2FsbG93U2NvcGUsIERpc2FsbG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBpbXBs
ZW1lbnRhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTg2Mjg4
YjJlNzc3MGU4ODE3YTBlOGRiMmI0OGQ3MjYzNzc4ZGMxNS4uOWZkNDk1YzNkZDA2OTkwN2E1YWU3
NThmMGExZDJmOGUzYTFmMzdhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTQzLDcgKzU0Myw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NjksNiArOTY4
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBy
dW50aW1lL09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUv
UGFyc2VJbnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGlt
ZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyYTFhODc5NDc4MzVkMmE5ZTAxNWM4YWM1NDFiYmZiZjkzNTU3ZTE5Li4wYzAyOTQ1ZDAyZmVm
OGQ3OWVlZGY1Zjc1MTIzZTk5MGIzZDhiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTI1Niw3ICsxMjU2LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1
dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQw
MENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzEx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0lu
dFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY1LDYgKzEyNjQs
NyBAQAogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVB
OTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12
N1JlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5
ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtp
bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2
OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAw
QjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMzYsOCArNDEzNiw2IEBA
CiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBw
YXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3
MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYx
QjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsg
cGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklU
NjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE1Nyw2ICs0MTU1LDggQEAKIAkJODZBREQx
NDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYg
LyogVGllcmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
ZXJlZE1NYXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0
Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cml2YXRlRmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2
OTAyMjRCOEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1ODYsNiArNzU4
Niw4IEBACiAJCQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJ
CQkJQ0UyMEJEMDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6
ZXJBZ2VudC5jcHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rp
b25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4
N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4
NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFB
MjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAw
QUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NDU3LDggKzg0NTksNiBAQAog
CQkJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJ
MEY5M0I0QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkw
RjkzQjRBODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2
QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2
RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0
RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIy
QjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAy
MkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAxNzgsNiArMTAxNzgsNyBAQAog
CQkJCUNFMjBCRDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAv
KiBQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFF
QTlCNjFFMDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEy
NEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBp
biBIZWFkZXJzICovLApAQCAtMTAyMTgsNyArMTAyMTksNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5
ODYwMDMxRkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0
MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkzQjRBQTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhN
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1
dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
aW5kZXggNTkwZGI0Mjg3NTQxYWM0ZTMxN2ViZGJkZmQyNzZkYTU3MzQyY2U3ZS4uZjJkM2QyNTBm
NDVlMTM4MjIyM2ZmOTFjOTBlZjQ1OTIzODRhNWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dApAQCAtMjY4LDcgKzI2OCw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3Bw
CiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAog
Ynl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAog
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2Uu
Y3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTkzNiw2ICs5MzUsNyBAQCBydW50
aW1lL09iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGlt
ZS9PcGVyYXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9u
RmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQu
Y3BwCiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtU
aW1lci5jcHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNTg3ODQ1ZmQ1MGUzMmVi
ZmJlZTZkYmQ4ZDZlZjEwNTk0YWIzZDFjNS4uOTZlM2VkY2FhYzQxNzAwYjg2YWJkY2RlZTRmODUy
MzI4MzAyZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5r
SW5mbywKICAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRl
RmllbGRQdXRLaW5kLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVy
dHlPZmZzZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6
UmVzb2x2ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzMs
NiArNTczLDIwIEBAIG9wIDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3Jp
dGVCYXJyaWVyW0pTQ2VsbF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBh
cmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgcHV0S2luZDogUHJpdmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7
CisgICAgICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6
IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAg
ICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwK
ICAgICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OCw3ICs2
MTIsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAg
IGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNWY1ODY1OGEyZTZiMWU0NDZkODNhMjEw
MDAyODUzZWIyMzhjYzQxYi4uNjkyOGY3Zjg4NjljNGVmM2JhNTU4YWVlNTUzNzZhMTM2MTc1OTJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCkBAIC0yMjYsNiArMjI2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBV
U0VTKE9wRW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNF
UyhPcEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUs
IGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVy
dHksIHZhbHVlKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQog
ICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk0LDYgKzM5NSw3
IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJz
LCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3Zh
bDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVj
dDoKKyAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJu
YWxfZmllbGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9w
X2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNzljNTA1ZjRkMmY1MzFmZWVkNzEzY2E0MzY0NWZiNzlh
YzE4Y2JkOS4uNTAyODlhNzI1OTNiMWE4Y2ZhNGFkODdjMzg1NTEyYmViOWJhMzI2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUwOSw2ICs1
MDksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVGFpbENhbGxG
b3J3YXJkQXJndW1lbnRzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJn
cywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQorICAgICAgICBM
SU5LKE9wR2V0UHJpdmF0ZU5hbWUsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVj
dFBuYW1lLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxl
KQpAQCAtNTQwLDYgKzU0MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJ
TksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAgICAgICAgIExJTksoT3BQ
dXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVOYW1lKQogCiAgICAgICAg
IExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5V2l0aFNpemUpCkBAIC0x
MTM0LDYgKzExMzYsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgICAgICAg
ICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIFN0
cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAg
ICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgSlNDZWxsKiBwcm9w
ZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQocHJvcGVy
dHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVy
ZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGlmICh2bS5o
ZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xMzAwLDYgKzEzMjEsMjIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVD
aGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0
cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAg
ICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1
Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3Bl
cnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5p
c01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkK
KyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQocHJvcGVy
dHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01h
cmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25z
Ojp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0ZV9uYW1lIHRyYW5zaXRp
b24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3
U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigp
OworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlzPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVk
U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDM5ZmVlMGE2Njlh
MjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMuLmUwNWEyNTY0OGExM2IwNTk3MmY2NjRjMzdk
ZTA4Y2QzYzg5NDk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAt
MjksOSArMjksOSBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTGFiZWwu
aCIKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oIgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0
QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3Vs
dFR5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUg
IlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU4LDQ2ICsyNTgsNiBAQCBzdHJ1Y3QgRml0czxQdXRC
eUlkRmxhZ3MsIHNpemU+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+
Ci1zdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7Ci0gICAgdXNpbmcgVGFyZ2V0VHlw
ZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKLQotICAgIC8vIFB1
dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgot
ICAgIC8vICAgICAgICAgIGlzU3RyaWN0Ci0gICAgLy8gICAgICAgICAgICAgdgotICAgIC8vICAg
ICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0Ci0gICAgLy8gICAgICAgICAgIF4KLSAgICAvLyAgICBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwgMiA9IENyZWF0ZSB9Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9IDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
c19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKLQotICAgIHN0YXRpYyBib29s
IGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi0g
ICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3Mu
aXNEaXJlY3QoKSk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOwotICAgICAgICBhdXRvIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5wcml2YXRlRmllbGRBY2Nl
c3NLaW5kKCkpOwotICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPDwgc19w
cml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7
Ci0gICAgfQotCi0gICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdw
aSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkg
JiBzX2lzRGlyZWN0Qml0KTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJv
b2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOwotICAgICAgICBhdXRvIGFjY2VzcyA9IHN0YXRpY19j
YXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tp
bmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7Ci0gICAgICAgIGF1dG8g
ZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9w
cHkoKTsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lID8KLSAgICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0
KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSkgOgotICAgICAgICAg
ICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6
OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVE
ZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUpOwotICAgIH0KLX07Ci0KIHRlbXBsYXRlPHR5cGVu
YW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0
cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+
IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXpl
PjsKQEAgLTQyNyw0ICszODcsMjQgQEAgc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVi
bGljIEZpdHM8dWludDhfdCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KK3N0cnVjdCBGaXRzPFByaXZhdGVGaWVsZFB1dEtpbmQsIHNpemU+IDogcHVibGlj
IEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNp
emU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2Rl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKHB1dE1vZGUudmFsdWUoKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVydChQcml2
YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29u
dmVydChwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyBQcml2YXRlRmllbGRQ
dXRLaW5kIGNvbnZlcnQodHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBwdXRNb2RlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKEJhc2U6OmNvbnZl
cnQocHV0TW9kZSkpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0
MGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8d3RmL0NvbW1h
UHJpbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNl
IEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1dEJ5VmFsRmxh
Z3MgZmxhZ3MpCi17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdz
LmlzRGlyZWN0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIpOwotICAgIGlm
IChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQ
cml2YXRlRmllbGQrUHV0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0g
ICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFiMzZjNjFjZTMw
MmJmOWMyMzgyNTZhNzA1Njg3NjY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2RlLmgiCi0jaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBjbGFzcyBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBQdXQsCi0gICAgQ3Jl
YXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJsaWM6Ci0gICAgY29uc3RleHBy
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0g
ICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5
IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNl
dHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGlyZWN0KEVD
TUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3ModHJ1
ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFn
cyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUs
IGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3Mg
Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0LCBlY21hTW9k
ZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJl
Y3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7
IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0KLSAgICBib29sIGlzUHJp
dmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
ICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZp
ZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBZGQoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlWYWxG
bGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBtX2lzRGly
ZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0g
ICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBtX2lzRGlyZWN0
KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2VzcykKLSAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG1faXNE
aXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODA2ZjM5NTU2Y2FkMTVlOGY3M2RjZDVhNGRkNTc4
NDdmNmFkYzNmLi5iYjZmODQyNDEyNGIxNTYzMzMyMDllMjllMGE0YTQ3MzFjYmZkZGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzEyLDcgKzI3MTMsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkp
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzM2LDEzICsyNzM3
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVm
aW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZmQ4ZWMyMzQwNDVl
Mjk5NTE3NGIyMGM1MzJkMjgzMjIyYjAxMWNhOC4uNmNhYjA5YzA0N2VmNTg0ZTgxMGMxNmJhMWZm
NjE0NzBkZThmMTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDA3Niw2ICs0MDc2LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQ
dXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhYzQ3NzU4NGI0ODcw
NWU3MzExNDdmOGRjZjBkZjc3NDE4NGFkYjMxLi42MjRiOWIzMDAwYzJmMDlmNzkyMjMzYmI1Y2M0
NjU0ODkyNmU2MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1w
VGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQ
dXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAiUHV0
QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0
YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTI0Nywx
MCArMjQ3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1
cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgpOwogICAgIHZvaWQgZW1p
dFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUq
IHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsK
KyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBj
b25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUsIFByaXZhdGVGaWVs
ZFB1dEtpbmQpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFs
dWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAotICAgICAgICBib29sIGlzRGlyZWN0LCBCeXRlY29k
ZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUpOworICAgICAgICBib29sIGlzRGlyZWN0LCBC
eXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQg
PSBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgdm9pZCBoYW5kbGVEZWxldGVC
eUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3Rh
dHVzLCBFQ01BTW9kZSk7CkBAIC0xMjY3LDE4ICsxMjY3LDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBCeXRlY29kZT4KLUVDTUFNb2RlIGVjbWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2RlKQotewotICAg
IHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5M
SU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qg
Ynl0ZWNvZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0K
LQogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7
CkBAIC00ODEyLDIyICs0ODAwLDIzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0
ZUJ5SWQoCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAotICAgIE5vZGUq
IGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVj
bWFNb2RlKQorICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
Tm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNE
aXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVs
ZFB1dEtpbmQpCiB7Ci0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5
SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFs
dWUpOwotICAgIGVsc2UKKyAgICBpZiAoaXNEaXJlY3QpIHsKKyAgICAgICAgUHV0QnlJZERpcmVj
dERhdGEgaW5mbyhlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CisgICAgICAgIGFkZFRv
R3JhcGgoUHV0QnlJZERpcmVjdCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8oaW5mby5hc1dv
cmQoKSksIGJhc2UsIHZhbHVlKTsKKyAgICB9IGVsc2UKICAgICAgICAgYWRkVG9HcmFwaChwdXRC
eUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwogfQogCiB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFs
dWUsCi0gICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVj
dCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSBlY21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NpbXBs
ZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vz
c0lubGluaW5nKCkpIHsKICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpCiAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Ci0gICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUp
OworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQdXRLaW5kKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQ4MzUsNyArNDgyNCw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwo
KSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQogICAgICAgICAgICAgfHwgIU9wdGlvbnM6
OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQogICAgICAgICAgICAgfHwgcHV0QnlJZFN0
YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Z0xpc3RTaXplKCkpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00ODQ0LDcgKzQ4MzMsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVz
W3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKHB1
dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0
dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeUlk
KGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1v
ZGUsIHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDg4Nyw3ICs0ODc2LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlv
blNldCgpKSkgewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFs
dWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgICAgICBlbWl0
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qs
IGVjbWFNb2RlLCBwcml2YXRlRmllbGRQdXRLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC00OTUwLDExICs0OTM5LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5SWQoCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpT
ZXR0ZXI6IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkpOwog
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOwogCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVl
ID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsK
ICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFz
ZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7
CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQdXRLaW5kKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ5OTgsNyArNDk4OCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAgIAogICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUs
IHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfSB9CiB9CkBAIC02
MDQ3LDYgKzYwMzcsNjAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlz
KTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2
YXRlTmFtZT4oKTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkp
OworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAg
ICAgICAgICBib29sIGNvbXBpbGVkQXNQdXRCeUlkID0gZmFsc2U7CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKTsKKyAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRT
dGF0dXM7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0
YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCku
Ynl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQs
IGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCisgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQg
dGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIGlmIChi
eVZhbEluZm8gCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZv
CisgICAgICAgICAgICAgICAgICAgICAgICAmJiAhYnlWYWxJbmZvLT50b29rU2xvd1BhdGgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJh
ZENvbnN0YW50VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlZEFzUHV0
QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnlWYWxJ
bmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW4gPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlk
ZW50aWZpZXIuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuID0g
bV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiks
IHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghdWlkLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0
eSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zdHViSW5m
bywgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBib29sIGlzRGlyZWN0
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51
bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBuZXh0T3Bjb2RlSW5kZXgoKSwg
RUNNQU1vZGU6OnN0cmljdCgpLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKQorICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhieXRlY29kZS5tX3B1dEtpbmQpLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfcHJp
dmF0ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJv
cGVydHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVmaW5lRGF0YVByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODI2MCw3ICs4MzA0LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3Ny
RXhpdEluZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAg
ICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJl
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGVjbWFNb2Rl
KGJ5dGVjb2RlKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhp
dEluZGV4LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVk
QXNQdXRCeUlkKSB7CkBAIC04MjcxLDcgKzgzMTUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5k
ZQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBh
ZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAg
ICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1
dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVjbWFNb2RlKGJ5dGVj
b2RlKSkpOworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRC
eVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZv
KGJ5dGVjb2RlLm1fZWNtYU1vZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0
QnlWYWwgYW5kIFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2Ji
ZXIgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDFjNmM2NmY4MDIzNWNmOTY5ZWJiMjMxNjE5M2NkODM0NzBkOGM0MzUuLmFkOWYyNGM1
MDg2NjhmMDQ0ZDQ1NTMyYmUzNjVkMzE1NzU5OGViNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5Miw2ICsyOTIsNyBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbjoKICAgICBj
YXNlIG9wX3N1cGVyX3NhbXBsZXJfZW5kOgogICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZToK
KyAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxl
QW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiAvLyBEb24ndCBpbmxpbmUg
YmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNvcHkgc3RyaW5nIHRhYmxlcyBpbiB0aGUgY29uY3Vy
cmVudCBKSVQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IDg1MjAwZDVkYWYxZGVlOGU5MGZlODE0MWRiYjFjY2JkOWI1MzM3ZWUuLjcwMDE2Y2NlODA3ZGFl
NjA4OTJmZDc4ZmVlOGYxYzIzNWE4Yjk5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC02NjYsNiArNjY2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZh
bDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAg
ICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3Bl
cnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCA3M2M3OGUzNzViOTg5ZWVkZTFmYmNiZmQxM2ZkNDZkN2VkMGYyZTIwLi45
MDQ4NWYwYmJiNDc1YzRjOWJlMTM1NTc5OGI1NjA2NmViMjkwOTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBj
YXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0Fy
Z3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA5MGU5YjEzNGVlYTAyMTg5NzQzY2YxNDFhN2Q5YTZm
MmU3MTZiMDQzLi43YjZhMTE5ZGZkOWYwMzEwMWU1NTU3ZjgyZDQwZjdhMTVmMWU5ZTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI3NDcsNiAr
Mjc0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJv
dHRvbVZhbHVlOgogICAgICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRl
TmFtZToKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlW
YWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCBkZDBkMTJkYWY4ZDlhMTljNDE4YTBkYzNkNDkxY2NiNzAw
NDRhZWY3Li5hNTg3YzcxZmRmZDYyY2I3NjYxNTgzYWY1NmRhZDk3MjczZjFiMjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdl
dEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJh
bmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBl
TG9jYXRpb24uaCIKQEAgLTEzNiw2ICsxMzcsMjkgQEAgc3RydWN0IERhdGFWaWV3RGF0YSB7CiB9
Owogc3RhdGljX2Fzc2VydChzaXplb2YoRGF0YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3Qp
LCAiIik7CiAKK3N0cnVjdCBQdXRCeUlkRGlyZWN0RGF0YSB7CisgICAgUHV0QnlJZERpcmVjdERh
dGEoRUNNQU1vZGUgbW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKQorICAgICAgICA6
IGVjbWFNb2RlKG1vZGUpCisgICAgICAgICwgcHJpdmF0ZUZpZWxkUHV0S2luZChwdXRLaW5kKQor
ICAgIHsKKyAgICB9CisKKyAgICB1aW50MTZfdCBhc1dvcmQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDx1aW50MTZfdD4ocHJpdmF0ZUZpZWxkUHV0S2luZC52YWx1ZSgpKSA8
PCA4KSB8IGVjbWFNb2RlLnZhbHVlKCk7CisgICAgfQorCisgICAgc3RhdGljIFB1dEJ5SWREaXJl
Y3REYXRhIGZyb21Xb3JkKHVpbnQxNl90IHdvcmQpCisgICAgeworICAgICAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IEVDTUFNb2RlOjpmcm9tQnl0ZSh3b3JkICYgMHhmZik7CisgICAgICAgIFByaXZh
dGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKCh3
b3JkICYgMHhmZjAwKSA+PiA4KTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWREaXJlY3REYXRhKGVj
bWFNb2RlLCBwdXRLaW5kKTsKKyAgICB9CisKKyAgICBFQ01BTW9kZSBlY21hTW9kZTsKKyAgICBQ
cml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQ7Cit9OworCiBzdHJ1Y3QgQnJh
bmNoVGFyZ2V0IHsKICAgICBCcmFuY2hUYXJnZXQoKQogICAgICAgICA6IGJsb2NrKG51bGxwdHIp
CkBAIC0yMjcxLDcgKzIyOTUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gRUNNQU1v
ZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkpOwogICAgICAgICBjYXNlIERlbGV0
ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0
OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CkBAIC0yMjc5LDEyICsyMzAyLDM5IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgY2FzZSBQdXREeW5hbWlj
VmFyOgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgICAgIHJl
dHVybiBQdXRCeUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQobV9vcEluZm8yLmFzPHVpbnQxNl90Pigp
KS5lY21hTW9kZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OnN0cmljdCgpOwog
ICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBQdXRQcml2YXRl
TmFtZToKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVp
bnQ4X3Q+KCkpOworICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgICAgICByZXR1
cm4gUHV0QnlJZERpcmVjdERhdGE6OmZyb21Xb3JkKG1fb3BJbmZvMi5hczx1aW50MTZfdD4oKSku
cHJpdmF0ZUZpZWxkUHV0S2luZDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxk
UHV0S2luZDo6ZGVmaW5lKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIGhhc0FyaXRo
TW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlMmM0OGFlZTVmMGRhOTI4YmE5NDA1OGUxNDFjM2U1
ZWQ3Y2U0NTZmLi5mN2I3NjQ3ODczYzY4NTY1NGVkOTg1MjZjZmE3MTNiYmZkNjY3MWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDksNiArMjA5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZh
bCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlW
YWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8o
UHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlHZXRCeUlk
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRl
eCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1OWIyYWUw
YWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkhlYXBD
ZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgsNiArNDksNyBAQCBz
dHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVl
KG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIu
cmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6
IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFByaXZh
dGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkgeyB9CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCogcHRyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBkMTA3NmQ0ZTkxNGU3MDU4ODc1YjQ1MjZlNGM0M2Q4
ZGMzMmNjZjJhLi4xOTEyZmM1OGIzNThhZjcwN2QyMDc4ZWQ1YmZiMDM4ZWU2MjU0ZmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3Myw2ICsxMzczLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAg
ICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6
CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDA0MGQzZjNjYzhkNGI0MTk3NzJjOWExYWQ2OGI2
ZTRiZDkyMzc5MWYuLmRlMTY3ZTUzMmI1ZjljYWZkNWMzYjhhMzI1OWQ5YzNmYzg2YmIzM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjUs
NiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNl
dHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5
VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVy
dHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDZlYzllMDQ3NmRlMWIxZjUyY2JlY2Y4ZTUzOTBkMDQ2MDhkMzJlYzkuLjcxMWYwYTdkNDY2
ZDExNGQ0YWYxMTIxODYzMTE0ZDVjZTVkZDUxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTIxLDYgKzM1MjEsMjIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eVZhbHVl
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBw
cm9wZXJ0eVZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24o
bm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQ
cml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3Ms
IFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCku
dmFsdWUoKSkpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBub1Jlc3VsdChu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFn
cyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTI3MjIsNyArMTI3MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUo
KSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwg
UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250
U3BpbGwpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjczNyw3ICsxMjc1Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVk
UHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRj
aEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFN
b2RlKCksIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICBub1Jlc3VsdChub2Rl
KTsKIH0KQEAgLTEyNzUyLDcgKzEyNzY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2
YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIo
KTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2
YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgRGlyZWN0
LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0
S2luZCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQzODIsNyArMTQzOTgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUs
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBp
ZiAoc3BpbGxNb2RlID09IERvbnRTcGlsbCkgewpAQCAtMTQzOTQsNyArMTQ0MTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
dmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBw
dXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IDY2MjVkNjM5NmE1ZWVkZWFmZWQ1NmM2NDBmYTg3OWZjNGUxMWNjYTcuLjdmZGI4
OGFmOWUwMWFlMTM2MjJmZjhkMGE4MTcyMzM4MjFjOTRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcyMCw3ICs3MjAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQ2hlY2tOZXV0ZXJlZChOb2RlKik7CiAKICAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5
SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BS
UmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNw
aWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVn
IHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBQcml2
YXRlRmllbGRQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2
b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMzYwLDYgKzEzNjAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiwg
RWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21w
aWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBj
aGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhO
b2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUdldEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggYTFmMzFhYjQ0OTFlMWMxNDc2OGU3MGI5YjY1YWRmMmQwYzNiN2ZlMi4uNzQxMTQwZjI5MTNj
MTI2ZDFkZGU0NTQ3YTg1ZTkxZjllYTQyZTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTk2LDYgKzI1OTYs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBp
bGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxB
bGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKaW5kZXggMDZhMDgxY2FkY2UyYWY0OGFhNWVmMDM1YjljMjE4NGIxN2RhNjYzMi4u
NTIxNTNmMjE1ODYwNTUzYTU1MjRlNDhkZTBmMDExYWYwNDM3NGJlZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yOTE5LDYg
KzI5MTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAg
IGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0
QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCmluZGV4IDk2YTdmMTY0MTQ2MGE1MmU4MjZlNWM5MzdjZmNkODU0ZDM5YmQ0MmUuLjk1
YjVhM2Q1ZWNiYjk4ZDNiNDhhZjRkMmE0Yjk3MDczMTE0ZTNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Myw2ICszOTMsNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1
dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFs
V2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRC
eVN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA2NzEyMjBmY2VmOTE4Yzk4NGY4YWJmYzc2MDg2MDNmZDJhMGE5NjIyLi4wMTM4YWZl
ZTRkYWZkMGVlMDc4N2Q2ZThhMDgwMjNkMTdlYWUxMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDE4LDYgKzEwMTgsOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxl
UHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0
UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAgICAgIGNhc2UgQXRv
bWljc0FuZDoKICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hhbmdlOgpAQCAtMzk0Myw2
ICszOTQ2LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAg
IHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MygpKTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5k
KCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJh
dGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1f
b3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICB9CisKICAg
ICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CkBAIC00MjMxLDcgKzQyNDUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBh
dGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQ6
Om5vbmUoKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgo
aml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFi
ZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggZDk2NTg1YjEw
NTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNS4uNzMxNzEwMDk2Y2YzZTI0OThhZTQ1ZGRh
MjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIK
QEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIK
KyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3Mu
aCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggMjFhZDc2Y2YyMDQ1NGUyZjk4N2IwZjAwMjNmNTllYzAw
YWZjOGFhYy4uMjk2YzcxYjIyMDJiMmI0ZWYwYWZkYTFiZDQ1MDA5NTJjOTRmOWQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKQpAQCAtNTg1LDYgKzU4Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZh
dGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCkBAIC05MDAsNyArOTAyLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1
bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5v
dEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJh
ZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlw
ZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1
dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7Cisg
ICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAg
ICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRv
IHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNDc4Y2MwN2Vj
NmY1NTJkMjQ2MjU0Y2VjMzEwMDNlYjY2NTg2YjhkMi4uNzg3NDdmNTc3NmY0MThkZDhjZjRlMDMx
YWZjNDE4N2Q5MTRlNzNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0xNjEsNiArMTYx
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBC
eVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAs
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisg
ICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwg
bm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25l
VGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87
CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtNDA2LDcgKzQxNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2YgcHJpdmF0
ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQo
T3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBh
bmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lz
dGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1w
TGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwMyw2ICs2MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
Kik7CkBAIC02ODMsNiArNjkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9w
dXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAyMzY4MzA0NWYx
ZmQxZjZhYTQ1ZTYxZDYzODlhZWYxZmMyODIwMWU2Li43ZjdlNDQ5NWI2MTMzNzljNWExNDJmNTM0
YTI4NTMxMTNiNWIwMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTM2LDExICsxMzYsMTEgQEAgdm9pZCBK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
ZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUg
ZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmll
bGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChw
dXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkUHV0S2luZChwcml2YXRlRmllbGRQ
dXRLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7
CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpK
QyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsK
KyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSkgewogICAgICAgICBBU1NF
UlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3Ry
aWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkUHV0S2lu
ZC5pc0RlZmluZSgpKQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQ
cml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggNzMyOWQ2
YjczODE0ZDZjNGJhNTUyYTU4OTNlNzJiMDIxZTZhNTEyMC4uMmRmZjVmZDQ3YTc4OGE2NDVjZjlj
MjQ3Yzk3YjU4Mjc1MDU4Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsxMzAsMTIgQEAgY2xh
c3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1Ymxp
YzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFN
b2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQo
UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpT
VmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRj
aCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vz
cyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUs
IFB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0NCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0
S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIG1fcHJpdmF0ZUZpZWxkUHV0S2luZDsKIH07CiAK
IGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggZDUzZTY5Nzdk
MzlkNzU5ZTY3NDEyZmQ5YWQxYjllNjc4MmI5N2QzMS4uOTE1MjY2MGJmNGUyZGRlZWU3M2QwNTU1
YTRhOGRhNDBkOWQzNmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
QEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9k
ZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0KIAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJl
Y3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRl
TmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9k
ZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZChPcCkK
IHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKKyAgICByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5M
SU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9w
UHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIFByaXZh
dGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kPE9wUHV0UHJpdmF0ZU5hbWU+
KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBvcC5tX3B1dEtpbmQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggYmMzY2NjODAyMzVkNzM5Y2QxYWY1MjY5YzFlNmFiMTVmZWQ3NDg5NS4uZGFhYjM4Mzg1
M2VlOTRlZWIyZjQ1OWJlMWRjOTRkYTJjNmUxMWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMTA1LDcgKzExMDUsNiBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJz
Y3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAotCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTExMTksNiArMTExOCwxMzIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwg
c3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKworICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRp
bWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1
YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgw
KSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOworICAgICAg
ICAgICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgeworICAgICAgICAgICAgICAgIGlmIChieVZhbElu
Zm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgICAg
ICBKSVQ6OmNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPih2bSwg
Y29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNT
KSwgRGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAgICAgICAgICAgICAgb3B0
aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQ7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VlbSBsaWtlIGEgZ2Vu
ZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0
aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAg
ICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0
aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBzdWJz
Y3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAm
JiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZSkgewor
ICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91
dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQorICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQg
bWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVu
aXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25h
bWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAgICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENv
dW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZlVXAuCisgICAgICAgIGlmICgrK2J5VmFsSW5m
by0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRp
b25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKKyAgICAgICAgLy8gRG9u
J3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgcHV0S2luZC5pc0RlZmluZSgpID8gIG9wZXJhdGlv
bkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJp
Yyk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIAorICAgIC8vIFByaXZhdGUg
ZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisg
ICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNv
bnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09i
amVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlz
U3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9i
amVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
c2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNj
ZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9k
cyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUg
PSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNl
T2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Ns
b3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVBy
aXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9k
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAg
Ly8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGlj
YWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBt
b2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmll
bGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChi
eVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21h
TW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDRjMjIwNTMwYWI0ZGU1YjI2ZDdkOWFk
M2QzYjgyZTNiNGRiOTdkOWEuLjNmNGFhYTU5OWIwZTc2MWRhNjkyMzIyMzY2ZmYzOTRjNDA4MWVi
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yOCw3
ICsyOCw5IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVE1hdGhJQ0ZvcndhcmRz
LmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRo
UmV0dXJuVHlwZS5oIgorCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KIApAQCAtMTkzLDEwICsxOTUsMTMgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamUKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0
UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFBy
aXZhdGVGaWVsZFB1dEtpbmQpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8q
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkxpbmtDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RG
X0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAppbmRleCA3ZTA5NDQyMDkyMjU2YzhlYWY1NzhkYTdiNGUxOTUyNGMwMWVkOWNiLi44
NGU3ZGFiZWZlMzUwYzlkYmE3NmYxZTY0MmIwZDhlNWIwYTM3MWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRL
aW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1
YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBAIC0yNzUsNyArMjc2LDcg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5k
LCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3Jp
dGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUg
c2l6ZS4KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAg
ICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNt
YU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRl
Y29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0zMjgsNiAr
MzI5LDQ4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZhbEluc3RydWN0aW9u
SW5kZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1f
Y29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1Qx
KTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Cisg
ICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVsIGRvbmUgPSBsYWJl
bCgpOworICAgIAorICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgY29uc3RydWN0b3IgZm9yIEJ5VmFs
Q29tcGlsYXRpb25JbmZvCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxD
b21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1wLCBk
b25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFs
SW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtp
bmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0g
bGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUdQUik7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7CisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1
ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxhdGlvbklu
Zm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOworICAgIG1f
YnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0
ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlckJ5SWQ+KCk7
CkBAIC02NTksNyArNzAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAotICAgICAgICBkaXJlY3QgPyBEaXJl
Y3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAg
ICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVj
b2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzE3LDcgKzEzNjAsNyBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0
S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdU
MSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVj
b2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5h
cHBlbmQoanVtcCgpKTsKIApAQCAtMTQyOCw3ICsxNDcxLDcgQEAgdGVtcGxhdGUgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbERpcmVjdD4oY29uc3QgQ29uY3VycmVu
dEpTTG8KIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIE9wOjpvcGNvZGVJ
RCA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYmIE9w
OjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAgQVNTRVJUKChwdXRLaW5kID09IERp
cmVjdCAmJiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0IHx8IE9wOjpvcGNv
ZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKSkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYm
IE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZh
bEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDUwLDE4ICsxNDkzLDMxIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1ZmZlciwgcGF0
Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25zdGV4cHIgeworICAg
ICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KQorICAgICAgICAg
ICAgcmV0dXJuICJwdXRfYnlfdmFsX2RpcmVjdCI7CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQg
PT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAicHV0X3ByaXZhdGVf
bmFtZSI7CisgICAgICAgIHJldHVybiAicHV0X2J5X3ZhbCI7CisgICAgfTsKKwogICAgIGJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAogICAgICAgICBtX2Nv
ZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAotICAgICAgICAiQmFz
ZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gRGlyZWN0KSA/ICJfZGlyZWN0IiA6
ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgIkJhc2VsaW5l
ICVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwIiwgb3Bjb2RlTmFtZSgpLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCks
IHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsK
ICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKKyAgICBhdXRvIGdl
bmVyaWNGdW5jdGlvbiA9IHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIGlmIGNvbnN0ZXhwciAo
T3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUpCisgICAgICAgIGdlbmVyaWNGdW5j
dGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJp
dmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljOworCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2Rl
TG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IERp
cmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFs
R2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJl
c3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihnZW5lcmljRnVuY3Rpb24pKTsKIH0K
IC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRp
b24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAotLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBl
eHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KKy8vIHNvIHdlIGxpc3Qgb2ZmIHRo
ZSB0aHJlZSBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5
VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIp
OwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8
T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwg
Q2FjaGVhYmxlSWRlbnRpZmllcik7Cit0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPihCeVZhbEluZm8qLCBSZXR1cm5B
ZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAogSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMwNDdkMmIxMzllNmEyYjVhYWQ1MmYzNGVmNzU4ZGY5
NDMwYWFlYjUuLjc3Y2VlOGI3NzJhNjExYzc1MGQ3NWI2ZjdjOGRiMWQzZDNiMDhjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcApAQCAtMjg3LDYgKzI4Nyw1MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIH0K
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2Nr
LT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHBy
b3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9
IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisKKyAgICBM
YWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogQWRkIGEgbmV3IGNvbnN0
cnVjdG9yIGZvciBCeVZhbENvbXBpbGF0aW9uSW5mbworICAgIG1fYnlWYWxDb21waWxhdGlvbklu
Zm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4
LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87Cisg
ICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOworCisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7
CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFsdWVS
ZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCks
IGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHByb3BlcnR5
UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQo
dmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VSZWdzLCBw
cm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52
YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlv
bkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOworICAg
IG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CkBAIC02NjQsNyArNzA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6bm9uZSgpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYzUyM2U4YTYw
MDZkZGM1M2QyNTk5YTRkMjRjNmU5NGI1NGRjYWRiZC4uOGQ3OWNhNzE1ZDI1OTZjOWFhNGZkMzZi
ZTI3NWI4MWJmYTRkNTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU4LDkgKzU4LDkgQEAKICNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
LmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFn
cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeUlk
RmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDJmZmQyMDQxM2IxNzFhOTcxZjA4ODRk
ZTczYmUxNzQxZDdiNWQ5YWEuLmM3NjhiM2Y3ZmU3NTQwN2FkZmRkNWY1ZWZhYzI1NDUzNDAyMjFm
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtMTE3Nyw0OCArMTE3NywxMjYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5p
c1N0cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2Zs
YWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRl
Y29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNTRVJU
KCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGly
ZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAg
ICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkp
IHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRvdWJs
ZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwotICAgICAgICB1aW50
MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRB
c0RvdWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJ
bnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFs
dWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJl
Y3RJbmRleFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOwotICAgICAg
ICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0
aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChwcm9wZXJ0eS5pc1By
aXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVj
dC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwg
aXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRB
Y2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlz
U3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVG
aWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOyAgICAK
LSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlz
U3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5
KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAg
ICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAg
IEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7
CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJl
IGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1l
dGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RN
b2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAg
aWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5k
ZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlzU2V0KCkpOwor
ICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKwor
ICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAgICAgJiYgc3Vi
c2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlm
IChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3Bl
cnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOworCisgICAgICAg
ICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIpKSB7
CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNo
cG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBw
cm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJhcmVEYXRhKCkt
PnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURl
dGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgb3V0IGJ5
IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVj
dHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICBtZXRh
ZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5j
bGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAg
ICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkp
IHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2
aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5ld1N0
cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
b2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFzYXdQ
b2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0
dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3Ry
dWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJv
cGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3Nl
cnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRvIGRpc2FibGUg
Y2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0aGVuIHN0b3Jl
IHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZworICAgICAgICAg
ICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3ZSByZWlmeSBh
IGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRvIGRpc2FibGUg
Y2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRvZXMg
bm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMgb2Yg
c3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAgICAgICAgICAg
Ly8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG5l
d1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ss
IHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZjMzA4ZDlmM2Rk
ZTI1YjlmZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFlMThjYmZlODMz
ZjNhOWMxY2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNjdjY2ZkODQ3
ZmZhOTNjNmVmNDNjMzllMWJhZjRhNDUzZTAwMDI2OS4uZTVhMjI2ZmM4ZmFlMGU1NWQ4NDZkMGFh
NjVlNjNmZTE2N2Q2NGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYwNCw2ICs2MDQsMTMgQEAg
bWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRBZnRlclNsb3dQ
YXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0
aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisg
ICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisgICAgd3JpdGVC
YXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKy53cml0ZUJh
cnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQs
IGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmll
ckRvbmUpCkBAIC0xNjM2LDYgKzE2NDMsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
cHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAg
ICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVf
bmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFz
ZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykK
KyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0
YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29s
ZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1l
OjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQ
cml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQw
IC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMg
dDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9u
CisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJh
cnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAg
ICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkK
KyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQor
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywg
dDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRp
b246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9s
ZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRh
ZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93
OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisg
ICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29k
ZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2ZmUxNzMwNzhjYWMzYzFjYzE5MTQ4MDYzNmQyNzdl
YmJmYWEzNTQzLi5mYWZmNzQyM2ZhMTU1Y2E1MjhjNzVkOGM0OWE2ZmZjNGIzOGE4ZmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRl
X25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdldCht
X3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0Mywg
dDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9h
ZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0Mgor
ICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRlTmFt
ZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5
W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAg
IyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAgICAj
IHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0
MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxv
YWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFkYXRh
IGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBiYXNl
IGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlvbjoK
KyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xkcyB0
aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
b2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFs
dWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRjaCgp
CitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JF
eGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYTEyMzc3YTliMTNlOTFiZmYzY2EwNzJkMmQzNzkwNmY5ZTZjYjYzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxk
UHV0S2luZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91dC5w
cmludCgiU2V0Iik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNkYzRjYTMwNDhlYzdkYTAx
ZGJhMGQwYWFmYzg0YmI1Njc1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
IENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50U3RyZWFtOworfTsKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQdXRLaW5kIHsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
OF90IFNldCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERlZmluZSA9IDI7CisK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZnJvbUJ5
dGUodWludDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKGJ5dGUpOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIG5vbmUoKSB7IHJldHVybiBQ
cml2YXRlRmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRl
RmllbGRQdXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoU2V0KTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBkZWZpbmUoKSB7IHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vbmU7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFNldDsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0g
RGVmaW5lOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCh1aW50OF90IHZh
bHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV92
YWx1ZSA9PSBOb25lIHx8IG1fdmFsdWUgPT0gU2V0IHx8IG1fdmFsdWUgPT0gRGVmaW5lLCBtX3Zh
bHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZjRhMWU4OTIxMGZmMGE4MzBjNGJiZWUzZDg0YzZkOTFiMWQyOTIzOS4uOTVlNDc5Yzg3
ZDc4OTQ3MTdlOTg0YzQ3NTEyYzk3Yzg2MGM5YWQ0NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNy0y
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ11bRVNO
ZXh0XSBDcmVhdGUgYSBuZXcgb3Bjb2RlIHRvIGhhbmRsZSBwcml2YXRlIGZpZWxkcyBzdG9yZS9k
ZWZpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
anVzdGluZyB0ZXN0cyB0aGF0IGVtaXQgYGdldF9wcml2YXRlX25hbWVgIHRvIGF2b2lkIGV4ZWN1
dGlvbiBpbgorICAgICAgICBGVEwvREZHLgorCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXNldC1iZWZvcmUtZGVm
aW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qczogQWRkZWQuCisKIDIwMjAtMDctMjEgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjY0MzMwKTogaW5maW5pdGUgbG9vcCBpbiBKU0Mgc3RyZXNzIHRlc3RzIHVzaW5nIGNs
b29wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2
YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2Vj
OGFkYmM0ODE0YTM2MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlk
LWRpcmVjdC5qcwpAQCAtMCwwICsxLDU0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICIt
LW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBs
ZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6
ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQor
fQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOwor
CisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKwor
ICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAg
ICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisg
ICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOwor
ICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRG
aWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEM7CisgICAgaWYgKGkgPiA1MDAwKSB7CisgICAgICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGMuc2V0RmllbGQuY2FsbCh7fSk7
CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBjLnNldEZpZWxkKGkpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ2
YzI5OWM2NjI3MGJhYmNhM2QwMDdiN2E3ODMwOTc3Mjc5NGQ1MQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDQy
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oZHluYW1pY1Byb3BlcnR5KSB7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgIAorICAgICAg
ICBpbml0KCkgeworICAgICAgICAgICAgdGhpc1tkeW5hbWljUHJvcGVydHldID0gZHluYW1pY1By
b3BlcnR5OworICAgICAgICB9CisKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAg
dGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lu
bGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVj
bGFyYXRpb24pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
Q2xhc3MgPSBjbGFzc0RlY2xhcmF0aW9uKCdwcm9wZXJ0eScgKyBpKTsKKyAgICBsZXQgYyA9IG5l
dyBDbGFzcygpOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMmI2YzA1MTE5MmUxMTBi
MzAxYzRjODYzN2JkOTA2YzlmZDdkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKQEAgLTAsMCArMSw0MyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAg
ICBzaG91bGRUaHJvdzogZnVuY3Rpb24gKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKGUgaW5zdGFuY2VvZiBleGNlcHRpb24sIHRydWUpOwor
ICAgICAgICB9CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVuY3Rp
b24gZm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAj
Zm9vOworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAgdGhp
cy4jZm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lubGlu
ZShmb28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAx
MDAwKSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC5zaG91bGRUaHJvdyhU
eXBlRXJyb3IsICgpID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9IGVsc2UgeworICAg
IGZvbygpOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLW9zci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE5NzZmNTQwYTE0NDg3ZTBlNGUzY2IxMzA5MGIzOGE2ZWJiZGNkMDUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCww
ICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhp
cy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAg
ICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQor
CisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisg
ICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citu
b0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNl
dEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdm
b28nICsgaSk7Cit9CisKKworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43Y2ZjNTM2NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhp
Yy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAo
YSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0g
MDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkg
eworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7
CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAg
ICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgn
Zm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkp
OworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXNldC1i
ZWZvcmUtZGVmaW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1zZXQtYmVm
b3JlLWRlZmluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzA2YTcxZmE5MDdhZDE1YzE0M2YxYjdlN2Y4ODM5
NGQwYTc3MzVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1zZXQtYmVmb3JlLWRlZmluZS5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNl
cHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3
aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZFN0b3JlID0gZmFsc2U7
CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0
KCk7CisgICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3RvcmUpCisg
ICAgICAgIHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcgQygpOwor
fQorbm9JbmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
IGlmIChpID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgZm9vKCk7CisgICAgfSk7CisgIH0gZWxzZSB7
CisgICAgZm9vKCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhMzI5N2Jl
ZDgyZDdjMGM3ZTUyZDU1YTc1ZTVhYzIxMTgxYjdjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAs
MCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfQorfQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRG
aWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5l
KEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
K25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMu
c2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
J2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMzdk
ODE3ZWRlMTRhMjAzNWYzNWE2ODhiYTQxNWRhMTVmZDM3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIu
anMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdl
dEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citu
b0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKK2xldCBDMSA9IGNsYXNzRGVjbGFyYXRpb24oKTsK
K2xldCBDMiA9IGNsYXNzRGVjbGFyYXRpb24oKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgbGV0IGMgPSBpICUgMiA/IG5ldyBDMSA6IG5ldyBDMjsKKyAgICBjLnNl
dEZpZWxkKCd0ZXN0JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
dGVzdCcgKyBpKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405073</attachid>
            <date>2020-07-23 13:56:42 -0700</date>
            <delta_ts>2020-07-28 11:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200723175638.patch</filename>
            <type>text/plain</type>
            <size>124342</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODI5ZjM5NWY3YjViZmJjNDRkMDU5ZWYzZjQ1ZmU5ZjQyOWFmNmU1Li5lMzJkYzA0NGU1OWQ0NTli
OTk0ZmM0ZjlkODc0YWZlYjhkNmI5YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTkgQEAKKzIwMjAtMDctMjMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMsIGluY2x1ZGluZyBMTEludC4KKyAgICAgICAgSXQgaXMgYWxzbyBhZGRpbmcgYSBuZXcg
REZHIG5vZGUgYFB1dFByaXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBj
YXNlIG9mIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQor
ICAgICAgICBgcHV0X3ByaXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBh
cmUgdXNpbmcgd2l0aAorICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRy
eSB0byBjb21waWxlIGl0IGFzIGBQdXRCeUlkRGlyZWN0YAorICAgICAgICB1c2luZyBwcm9maWxl
ZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0Cisg
ICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lYCBub2Rl
LiBUaGlzIG5vZGUgZG9lc24ndAorICAgICAgICBoYXZlIGFueSBvcHRpbWl6YXRpb24gaW1wbGVt
ZW50ZWQgeWV0LCBhbmQgaXQgYWx3YXlzIGRvIGEgc2xvdyBwYXRoCisgICAgICAgIGNhbGwuIFRo
ZSBjYXNlIHRoYXQgZGlzYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBwdXRfcHJpdmF0ZV9uYW1l
YCBhcworICAgICAgICBgUHV0QnlJZERpcmVjdGAgaXMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGV2
YWx1YXRpb25zIG9mIHRoZSBzYW1lCisgICAgICAgIGNsYXNzLCBidXQgc3VjaCBwYXR0ZXJuIG1p
Z2h0IG5vdCBiZSBjb21tb24uIElmIHRoaXMgaHlwb3RoZXNpcyBzaG93cworICAgICAgICB0byBi
ZSBmYWxzZSwgdGhlcmUgaXMgc3BhY2UgdG8gb3B0aW1pemUgYFB1dFByaXZhdGVOYW1lYCBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4
SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJv
cGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5l
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2
YXRlRmllbGRQdXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6UHV0QnlJZERpcmVjdERhdGE6OlB1dEJ5SWREaXJlY3REYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpQdXRCeUlkRGlyZWN0RGF0YTo6YXNXb3JkKToKKyAgICAgICAgKEpTQzo6REZHOjpQdXRC
eUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICog
Z2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21w
aWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVO
YW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNO
b25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIw
MjAtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBCaWdJbnQgY2FuIGJlIGBmYWxzZWAgaW4gYm9vbGVhbiBjb250ZXh0IGluIERGRyBBSQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2Ew
ZThkYjJiNDhkNzI2Mzc3OGRjMTUuLjlmZDQ5NWMzZGQwNjk5MDdhNWFlNzU4ZjBhMWQyZjhlM2Ex
ZjM3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0Myw3ICs1NDMs
NiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5
dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAg
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAg
ICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgK
ICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtOTY5LDYgKzk2OCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9PcHRpb25z
LmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1lL1BhcnNlSW50LmgKKyAg
ICBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaAogICAgIHJ1bnRpbWUvUHJpdmF0ZU5hbWUu
aAogICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmExYTg3OTQ3ODM1
ZDJhOWUwMTVjOGFjNTQxYmJmYmY5MzU1N2UxOS4uMGMwMjk0NWQwMmZlZjhkNzllZWRmNWY3NTEy
M2U5OTBiM2Q4YjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTYsNyAr
MTI1Niw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2
QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlG
NiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZB
Mzc1OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2NSw2ICsxMjY0LDcgQEAKIAkJODZBREQx
NDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyog
QVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZE
REVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBN
YWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2
Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIx
M0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTM2LDggKzQxMzYsNiBAQAogCQk4NjcwNEI4MTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0
ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJu
LmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFy
clBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFn
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFG
RjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4
RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQxNTcsNiArNDE1NSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2
RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1
IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0
S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2
YXRlRmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0
MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTg2LDYgKzc1ODYsOCBAQAogCQkJCTM3
QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovLAogCQkJCUNFMjBCRDAyMjM3
RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwICov
LAogCQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5n
RnV6emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdDOTUgLyogUHJpdmF0
ZUZpZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFBy
aXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyog
UHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9n
cmFtRXhlY3V0YWJsZS5oICovLApAQCAtODQ1Nyw4ICs4NDU5LDYgQEAKIAkJCQkwRjkzMzI5QTE0
Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJD
NEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0JCQkJODY3NkM2RTcyMzQ2NDVCMzAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZB
QUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUw
IC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29y
ZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMTc4LDYgKzEwMTc4LDcgQEAKIAkJCQlDRTIwQkQwNzIz
N0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAwOUUgLyogUHJldmVudENvbGxl
Y3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5
IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5
NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1
NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTBB
QUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwMjE4LDcgKzEwMjE5LDYgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyog
UHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYz
QzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU5MGRiNDI4
NzU0MWFjNGUzMTdlYmRiZGZkMjc2ZGE1NzM0MmNlN2UuLmYyZDNkMjUwZjQ1ZTEzODIyMjNmZjkx
YzkwZWY0NTkyMzg0YTVlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw3
ICsyNjgsNiBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAotYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCkBAIC05MzYsNiArOTM1LDcgQEAgcnVudGltZS9PYmplY3RUb1N0
cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKIHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1
enplckFnZW50LmNwcAorcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDU4Nzg0NWZkNTBlMzJlYmZiZWU2ZGJkOGQ2ZWYx
MDU5NGFiM2QxYzUuLjk2ZTNlZGNhYWM0MTcwMGI4NmFiZGNkZWU0Zjg1MjMyODMwMmRkYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
NDYsMTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJl
c3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwK
ICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAg
IDpQdXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAog
ICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTczLDYgKzU3MywyMCBAQCBv
cCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0Nl
bGxdLAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAg
ICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFBy
aXZhdGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJb
SlNDZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewog
ICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01OTgsNyArNjEyLDcgQEAgb3AgOnB1
dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDVmNTg2NThhMmU2YjFlNDQ2ZDgzYTIxMDAwMjg1M2ViMjM4Y2M0
MWIuLjY5MjhmN2Y4ODY5YzRlZjNiYTU1OGFlZTU1Mzc2YTEzNjE3NTkyZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI2
LDYgKzIyNiw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0
b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwg
YmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0
eSkKKyAgICBVU0VTKE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAg
ICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hh
c0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5z
dGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTM5NCw2ICszOTUsNyBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydQogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBv
cF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBv
cF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAg
IGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDc5YzUwNWY0ZDJmNTMxZmVlZDcxM2NhNDM2NDVmYjc5YWMxOGNiZDkuLjUwMjg5
YTcyNTkzYjFhOGNmYTRhZDg3YzM4NTUxMmJlYjliYTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50
cywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUpCiAg
ICAgICAgIExJTksoT3BHZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFByaXZh
dGVOYW1lLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJvZmls
ZSkKICAgICAgICAgTElOSyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKQEAgLTU0MCw2ICs1
NDEsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkK
ICAgICAgICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3Qp
CisgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJy
YXkpCiAgICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNCw2ICsxMTM2LDI1
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAu
aXNNYXJrZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAg
aWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0
YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG5ld1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChv
bGRTdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTMwMCw2ICsxMzIxLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5l
Q2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsK
ICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVO
YW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAg
ICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAg
ICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiQ2xlYXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX29mZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0g
MDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7
CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIy
YTM4MmJmNmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAi
T3Bjb2RlU2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRl
ICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgot
I2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5j
bHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0
ZXIuaCIKQEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXpl
PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8
UHV0QnlWYWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBU
eXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlz
IDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAg
ICBpc1N0cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAg
PCBpc0RpcmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
aXNTdHJpY3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZh
bEZsYWdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFRhcmdldFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwot
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1v
ZGUoKS5pc1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAg
ICAgICAgcmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAg
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAg
ICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJp
dCk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lz
U3RyaWN0Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmll
bGRBY2Nlc3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19w
cml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNT
dHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAg
IHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAg
ICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2
YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZp
ZWxkKGVjbWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVT
aXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihF
KSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBw
dWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcg
QmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCAr
Mzg3LDI0IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4
X3QsIHNpemU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3Qs
IHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0
YXRpYyBib29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0
YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52
YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0
KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsK
KyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDhlOTBmZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKLQotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQotewot
ICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOwotICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQot
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3QiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2
YXRlRmllbGRQdXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1
dCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YWRmMmQxYjM2YzYxY2UzMDJiZjljMjM4MjU2YTcw
NTY4NzY2N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFQ01BTW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNs
YXNzIFB1dEJ5VmFsRmxhZ3MgewotcHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlW
YWxGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0
IHB1dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNr
aW5nIGlmIHRoZQotICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsK
LSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5l
UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZh
dGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQot
ICAgIGJvb2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNN
QU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kOjpQdXQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0
ZTsgfQotCi1wcml2YXRlOgotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSkKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2Vz
cywgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFN
b2RlIG1fZWNtYU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNjgwNmYzOTU1NmNhZDE1ZThmNzNkY2Q1YTRkZDU3ODQ3ZjZhZGMzZi4uYmI2
Zjg0MjQxMjRiMTU2MzMzMjA5ZTI5ZTBhNGE0NzMxY2JmZGRkYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMu
aCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZh
bENvZGVCbG9jay5oIgpAQCAtMjcxMiw3ICsyNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRC
eVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkp
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjczNiwxMyArMjczNywxMyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVG
aWVsZChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJp
dmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGY0YTgyNzg5MmVlNzg5YTZiMTRiYzBlNGQ1
YzA2OGFlMzUyNWQ5ZTMuLmQ4Y2ZmYzUwOWJiZjE5MjBkYWNlYTAwMGQwNGQxNzE1MzNjOGM2OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQwNzQsNiArNDA3NCw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlz
OgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYWM0Nzc1ODRiNDg3MDVlNzMxMTQ3ZjhkY2Yw
ZGY3NzQxODRhZGIzMS4uNjI0YjliMzAwMGMyZjA5Zjc5MjIzM2JiNWNjNDY1NDg5MjZlNjM0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTcwLDkgKzcwLDkgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNp
bmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5o
IgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0yNDcsMTAgKzI0NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAotICAg
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CisgICAgICAgIE5vZGUq
IGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0
YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKICAg
ICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRC
eUlkU3RhdHVzJiwKLSAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0
SW5kZXgsIEVDTUFNb2RlKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kID0gUHJpdmF0ZUZpZWxk
UHV0S2luZDo6bm9uZSgpKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNNQU1vZGUp
OwpAQCAtMTI2NywxOCArMTI2Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNl
T1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Ci1F
Q01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNv
ZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQotewot
ICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0KIEJhc2ljQmxvY2sq
IEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgxMiwyMiAr
NDgwMCwyMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogfQogCiB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVz
JiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewot
ICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKLSAgICBlbHNl
CisgICAgaWYgKGlzRGlyZWN0KSB7CisgICAgICAgIFB1dEJ5SWREaXJlY3REYXRhIGluZm8oZWNt
YU1vZGUsIHByaXZhdGVGaWVsZFB1dEtpbmQpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRE
aXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGluZm8uYXNXb3JkKCkpLCBiYXNlLCB2
YWx1ZSk7CisgICAgfSBlbHNlCiAgICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtl
c0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9w
SW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLAotICAgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2RlSW5k
ZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBjb25zdCBQdXRCeUlkU3Rh
dHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJ
bmRleCwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxk
UHV0S2luZCkKIHsKICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJ
ZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7
CiAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9H
cmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC00ODM1LDcgKzQ4MjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0
YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFu
dHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7
Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUs
IHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNDg0NCw3ICs0ODMzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhd
LmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGVjayhwdXRCeUlkU3RhdHVzW3Zh
cmlhbnRJbmRleF0uY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
ZWNtYU1vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmll
bGRQdXRLaW5kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTQ4ODcsNyArNDg3Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwg
T3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwg
YmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAg
ICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSwgcHJp
dmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
NDk1MCwxMSArNDkzOSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAg
ICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgYWRkVG9H
cmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0
YXR1cykpLCBiYXNlKTsKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0Nl
bGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICgh
bG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00OTk4LDcgKzQ5ODgsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBkZWZhdWx0OiB7Ci0gICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBp
c0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQ
dXRLaW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNjA0Nyw2ICs2MDM3LDYw
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAg
ICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCBj
b21waWxlZEFzUHV0QnlJZCA9IGZhbHNlOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCk7CisgICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgo
KSkpLmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5
dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVj
b21lcyBudWxsLgorICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlz
IG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAorICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgYnlWYWxJbmZvLT5zdHViSW5mbworICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc1B1dEJ5SWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGJ5VmFsSW5mby0+Y2FjaGVkSWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRp
Zmllck51bWJlcl07CisgICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVu
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2Vs
bCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb3plbiA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIXVpZC0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJlbnRDb2Rl
T3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0RpcmVjdCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQorICAgICAgICAgICAgICAgICAgICBo
YW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgbmV4dE9wY29kZUluZGV4KCksIEVDTUFNb2RlOjpzdHJp
Y3QoKSwgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFjb21waWxlZEFzUHV0QnlJZCkKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFBy
aXZhdGVOYW1lLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURh
dGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKQEAgLTgyNjAsNyArODMwNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5k
bGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOwor
ICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNv
ZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpA
QCAtODI3MSw3ICs4MzE1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwo
Qnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8g
TGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
bnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAg
ICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQ
dXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2Vj
bWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRC
eVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUs
IHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxYzZjNjZm
ODAyMzVjZjk2OWViYjIzMTYxOTNjZDgzNDcwZDhjNDM1Li5hZDlmMjRjNTA4NjY4ZjA0NGQ0NTUz
MmJlMzY1ZDMxNTc1OThlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yOTIsNiArMjkyLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9z
YW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9w
dXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAog
ICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9u
J3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRl
ZThlOTBmZTgxNDFkYmIxY2NiZDliNTMzN2VlLi43MDAxNmNjZTgwN2RhZTYwODkyZmQ3OGZlZThm
MWMyMzVhOGI5OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aApAQCAtNjY2LDYgKzY2Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQ
dXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQ
dXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5l
RGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNl
IERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
NzNjNzhlMzc1Yjk4OWVlZGUxZmJjYmZkMTNmZDQ2ZDdlZDBmMmUyMC4uOTA0ODVmMGJiYjQ3NWM0
YzliZTEzNTU3OThiNTYwNjZlYjI5MDkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRT
ZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZToKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAg
Y2FzZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggOTBlOWIxMzRlZWEwMjE4OTc0M2NmMTQxYTdkOWE2ZjJlNzE2YjA0My4uN2I2
YTExOWRmZDlmMDMxMDFlNTU1N2Y4MmQ0MGY3YTE1ZjFlOWU3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAg
ICAgICAgY2FzZSBUeXBlT2Y6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAg
IGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAg
ICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKaW5kZXggZGQwZDEyZGFmOGQ5YTE5YzQxOGEwZGMzZDQ5MWNjYjcwMDQ0YWVmNy4uYTU4N2M3
MWZkZmQ2MmNiNzY2MTU4M2FmNTZkYWQ5NzI3M2YxYjIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgog
I2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBA
IC0xMzYsNiArMTM3LDI5IEBAIHN0cnVjdCBEYXRhVmlld0RhdGEgewogfTsKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCitzdHJ1
Y3QgUHV0QnlJZERpcmVjdERhdGEgeworICAgIFB1dEJ5SWREaXJlY3REYXRhKEVDTUFNb2RlIG1v
ZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkKKyAgICAgICAgOiBlY21hTW9kZShtb2Rl
KQorICAgICAgICAsIHByaXZhdGVGaWVsZFB1dEtpbmQocHV0S2luZCkKKyAgICB7CisgICAgfQor
CisgICAgdWludDE2X3QgYXNXb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHByaXZhdGVGaWVsZFB1dEtpbmQudmFsdWUoKSkgPDwgOCkgfCBlY21hTW9k
ZS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBQdXRCeUlkRGlyZWN0RGF0YSBmcm9tV29y
ZCh1aW50MTZfdCB3b3JkKQorICAgIHsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01B
TW9kZTo6ZnJvbUJ5dGUod29yZCAmIDB4ZmYpOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5k
IHB1dEtpbmQgPSBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSgod29yZCAmIDB4ZmYwMCkg
Pj4gOCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkRGlyZWN0RGF0YShlY21hTW9kZSwgcHV0S2lu
ZCk7CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGU7CisgICAgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwcml2YXRlRmllbGRQdXRLaW5kOworfTsKKwogc3RydWN0IEJyYW5jaFRhcmdldCB7CiAg
ICAgQnJhbmNoVGFyZ2V0KCkKICAgICAgICAgOiBibG9jayhudWxscHRyKQpAQCAtMjI3MSw3ICsy
Mjk1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZSht
X29wSW5mby5hczx1aW50OF90PigpKTsKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAg
ICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2Fz
ZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBj
YXNlIFB1dEJ5VmFsOgpAQCAtMjI3OSwxMiArMjMwMiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAg
ICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOwor
ICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZERp
cmVjdERhdGE6OmZyb21Xb3JkKG1fb3BJbmZvMi5hczx1aW50MTZfdD4oKSkuZWNtYU1vZGU7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKICAgICAgICAgfQogICAg
IH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAg
IGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICAgICAgICAgIHJldHVybiBQ
cml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWREaXJl
Y3REYXRhOjpmcm9tV29yZChtX29wSW5mbzIuYXM8dWludDE2X3Q+KCkpLnByaXZhdGVGaWVsZFB1
dEtpbmQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmlu
ZSgpOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggZTJjNDhhZWU1ZjBkYTkyOGJhOTQwNThlMTQxYzNlNWVkN2NlNDU2Zi4uZjdi
NzY0Nzg3M2M2ODU2NTRlZDk4NTI2Y2ZhNzEzYmJmZDY2NzFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjA5LDYgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1l
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdl
NTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOS4uNDMzNTI2NTliMmFlMGFjMzU5N2Q5ZDVkYTg4
OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE9wSW5mbyB7
CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkg
eyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsg
fQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFN
b2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5k
IHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggZDEwNzZkNGU5MTRlNzA1ODg3NWI0NTI2ZTRjNDNkOGRjMzJjY2YyYS4uMTkx
MmZjNThiMzU4YWY3MDdkMjA3OGVkNWJmYjAzOGVlNjI1NGZiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTEzNzMsNiArMTM3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlW
YWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0
Q2xvc3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNl
IFB1dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAppbmRleCAwNDBkM2YzY2M4ZDRiNDE5NzcyYzlhMWFkNjhiNmU0YmQ5MjM3OTFmLi5k
ZTE2N2U1MzJiNWY5Y2FmZDVjM2I4YTMyNTlkOWMzZmM4NmJiMzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI1LDYgKzUyNSw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAg
IGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2Ug
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2ZWM5ZTA0NzZk
ZTFiMWY1MmNiZWNmOGU1MzkwZDA0NjA4ZDMyZWM5Li43MTFmMGE3ZDQ2NmQxMTRkNGFmMTEyMTg2
MzExNGQ1Y2U1ZGQ1MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMzUyMSw2ICszNTIxLDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFs
dWVSZWdzKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHlWYWx1ZS5q
c1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MygpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwor
CisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPnByaXZhdGVG
aWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5l
cmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkK
IHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTEyNzIyLDcgKzEyNzM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIo
KTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1i
bGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIFByaXZhdGVGaWVsZFB1
dEtpbmQ6Om5vbmUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTI3MzcsNyArMTI3NTMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQcml2YXRl
RmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjc1
Miw3ICsxMjc2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0
KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNo
ZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3Jh
dGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJl
Y3QsIG5vZGUtPmVjbWFNb2RlKCksIG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTE0MzgyLDcgKzE0Mzk4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9k
ZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtp
bmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQ
dXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9
PSBEb250U3BpbGwpIHsKQEAgLTE0Mzk0LDcgKzE0NDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBK
U1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAog
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAg
ICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgcHJpdmF0
ZUZpZWxkUHV0S2luZCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2NjI1
ZDYzOTZhNWVlZGVhZmVkNTZjNjQwZmE4NzlmYzRlMTFjY2E3Li43ZmRiODhhZjllMDFhZTEzNjIy
ZmY4ZDBhODE3MjMzODIxYzk0ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tcGlsZUNoZWNrTmV1dGVyZWQoTm9kZSopOwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01v
ZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgp
LCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRC
eVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTM2MCw2ICsxMzYwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwg
RWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBj
aGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9m
ZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGExZjMxYWI0NDkx
ZTFjMTQ3NjhlNzBiOWI2NWFkZjJkMGMzYjdmZTIuLjc0MTE0MGYyOTEzYzEyNmQxZGRlNDU0N2E4
NWU5MWY5ZWE0MmU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5Niw2ICsyNTk2LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5h
bWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDA2YTA4MWNhZGNlMmFmNDhhYTVlZjAzNWI5YzIxODRiMTdkYTY2MzIuLjUyMTUzZjIxNTg2MDU1
M2E1NTI0ZTQ4ZGUwZjAxMWFmMDQzNzRiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjkxOSw2ICsyOTE5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJp
dmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5
NmE3ZjE2NDE0NjBhNTJlODI2ZTVjOTM3Y2ZjZDg1NGQzOWJkNDJlLi45NWI1YTNkNWVjYmI5OGQz
YjQ4YWY0ZDJhNGI5NzA3MzExNGUzYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTMsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgog
ICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjcxMjIw
ZmNlZjkxOGM5ODRmOGFiZmM3NjA4NjAzZmQyYTBhOTYyMi4uOTE3NGU2NzZhZDQzNGY5YWRkMTM3
YTNiYzg1ODZhYWI5YzI0MTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtMTAxOCw2ICsxMDE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRo
aXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAg
ICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAgLTM5NDMsNiArMzk0NiwxNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhp
c1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAg
ICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkg
PyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRl
TmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5jb25zdEludDMy
KEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxl
QXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwpAQCAtNDIxMyw2ICs0MjI3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSog
c3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5l
Y21hTW9kZSgpOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtp
bmQgPSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBub2RlLT5wcml2YXRlRmllbGRQdXRL
aW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAgICAgIAogICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIzMSw3
ICs0MjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVn
cyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJh
bXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGly
ZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGly
ZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5y
YgppbmRleCBkOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAw
OTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJlNzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2lu
Y2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVk
ZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyMWFkNzZjZjIwNDU0ZTJm
OTg3YjBmMDAyM2Y1OWVjMDBhZmM4YWFjLi4yOTZjNzFiMjIwMmIyYjRlZjBhZmRhMWJkNDUwMDk1
MmM5NGY5ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MjUsNiArNDI1LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkBAIC01ODUsNiArNTg2LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZGVsX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikKQEAgLTkwMCw3ICs5MDIsMTIgQEAgQ29t
cGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1w
ID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYg
KEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5v
dEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsK
LSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxD
b21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1w
OworICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1w
KS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1
dG8gZG9uZVRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8u
ZG9uZVRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsK
ICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCA0NzhjYzA3ZWM2ZjU1MmQyNDYyNTRjZWMzMTAwM2ViNjY1ODZiOGQyLi43ODc0N2Y1
Nzc2ZjQxOGRkOGNmNGUwMzFhZmM0MTg3ZDkxNGU3M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTE2MSw2ICsxNjEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgfQogCisgICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIG5vdEluZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJnZXQsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgICAgIDogYnlWYWxJ
bmZvKGJ5VmFsSW5mbykKKyAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KQorICAgICAgICAgICAgLCBub3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQorICAgICAgICAgICAg
LCBkb25lVGFyZ2V0KGRvbmVUYXJnZXQpCisgICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0
KG5leHRIb3RQYXRoVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBCeVZh
bEluZm8qIGJ5VmFsSW5mbzsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4Owog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXA7CkBAIC00
MDYsNyArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gRGV0ZXJtaW5lcyB0
aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJp
dmF0ZUZpZWxkUHV0S2luZChPcCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxw
ZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlWYWxJZGVu
dGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwpAQCAtNjAzLDYgKzYxMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Myw2ICs2OTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
c3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDIzNjgzMDQ1ZjFmZDFmNmFhNDVlNjFkNjM4OWFlZjFmYzI4MjAxZTYuLjdmN2U0NDk1
YjYxMzM3OWM1YTE0MmY1MzRhMjg1MzExM2I1YjAyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEg
KzEzNiwxMSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJ
ZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRL
aW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRQ
dXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQpCiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdp
c3RlcnMsIGJhc2UsIHZhbHVlKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAg
ICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRQdXRL
aW5kKHByaXZhdGVGaWVsZFB1dEtpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVy
cy5jbGVhcihzY3JhdGNoKTsKIH0KQEAgLTE1MiwxMCArMTUyLDEwIEBAIHZvaWQgSklUUHV0QnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJ
VE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24o
KQogewotICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZSkgeworICAgIGlmICghbV9wcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgp
KSB7CiAgICAgICAgIEFTU0VSVChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKICAgICAgICAgQVNTRVJU
KG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQorICAgICAgICBpZiAobV9w
cml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaAppbmRleCA3MzI5ZDZiNzM4MTRkNmM0YmE1NTJhNTg5M2U3MmIwMjFlNmE1MTIwLi4yZGZm
NWZkNDdhNzg4YTY0NWNmOWMyNDdjOTdiNTgyNzUwNThjY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEs
MTIgKzEzMCwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6
IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fcHJp
dmF0ZUZpZWxkUHV0S2luZChQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpCiAgICAgeyB9CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFs
dWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgCiAg
ICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUs
NyArMTQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwog
ICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgbV9wcml2YXRlRmll
bGRQdXRLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAppbmRleCBkNTNlNjk3N2QzOWQ3NTllNjc0MTJmZDlhZDFiOWU2NzgyYjk3ZDMxLi45MTUyNjYw
YmY0ZTJkZGVlZTczZDA1NTVhNGE4ZGE0MGQ5ZDM2YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAgQUxXQVlTX0lOTElORSBFQ01B
TW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0
ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVj
dD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21h
TW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBv
cC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRl
RmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiB9CiAKIHRlbXBs
YXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FM
V0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVGaWVsZFB1dEtpbmQ8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkKIHsKLSAgICByZXR1cm4gb3Au
bV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIG9wLm1fcHV0S2lu
ZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBlZjBlODNmNDlkMjk2MGUyZmY3NDM0ZjhhZTBhOGYyMGIz
NTc3NGNjLi5kNzk5YzA0ODQzNDZjMzdlYjQ1MGZiNzJlMmM2NjEzY2RkN2MzZmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTExMDUsNyArMTEw
NSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0
LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQog
Ci0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTExOSw2ICsxMTE4LDEzMiBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09i
amVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsK
IH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRL
aW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOworCisgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxl
SWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3lt
Ym9sKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAh
PSBCeXRlY29kZUluZGV4KDApKTsKKyAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHVi
Um91dGluZSk7CisgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0
UHJpdmF0ZU5hbWU+KHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBEaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAg
ICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9w
dGltaXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAv
LyBTZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmll
cihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJl
c3VsdDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1
bHQ6OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhh
biAxMCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8v
IG5ldmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMg
d29ydGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0
aGUgcHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNv
dW50IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAg
ICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0
aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisg
ICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkg
eworICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVm
aW5lKCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0
UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
CisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNz
IGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0
cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8g
YmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgp
KQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3Qt
PnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxk
cyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8v
IGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBi
b29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmlj
dE1vZGUpOworICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAg
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3
aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBh
bHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7
CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VPYmplY3Qt
PmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1Bh
dGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNGMyMjA1
MzBhYjRkZTViMjZkN2Q5YWQzZDNiODJlM2I0ZGI5N2Q5YS4uYjE2NDg0MTY3MjNjMzg2NzU3NDc1
MWUxNGQxNjNiOTExZDM0NGIxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAi
SklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAj
aW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTE5MywxMCArMTk0
LDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZp
ZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVD
TUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZh
dGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxM
aW5rSW5mbyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggN2UwOTQ0MjA5MjI1NmM4ZWFmNTc4ZGE3YjRlMTk1
MjRjMDFlZDljYi4uZmZmOGE2MjczOTQ1Mjc5N2RiNTRmOWE2ZWEyOGU0ZmJiMTkwOWZjMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpAQCAt
Mjc1LDcgKzI3Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwg
cHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVj
b2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkUHV0S2luZChieXRlY29kZSkpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVy
ZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6
IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRv
IHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7
Ci0gICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVj
bWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0
KQpAQCAtMzI4LDYgKzMyOSw0NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKCk7CisKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hh
YmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJl
bCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVu
ZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBh
dGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2Rl
Lm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xv
d1BhdGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BS
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BS
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRL
aW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVy
QnlJZD4oKTsKQEAgLTY1OSw3ICs3MDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzMTcsNyArMTM1OSw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0
ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xNDI4LDcgKzE0NzAsNyBAQCB0ZW1wbGF0ZSB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBD
b25jdXJyZW50SlNMbwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6
Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJl
Y3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtp
bmQgPT0gRGlyZWN0ICYmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwg
T3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUpKSB8fCAocHV0S2luZCA9PSBOb3RE
aXJlY3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKICAgICBjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAKQEAgLTE0NTAsMTggKzE0OTIsMzEgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICB9CiAgICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVm
ZmVyLCBwYXRjaEJ1ZmZlcik7CiAKKyAgICBhdXRvIG9wY29kZU5hbWUgPSBbXSgpIGNvbnN0ZXhw
ciB7CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpCisg
ICAgICAgICAgICByZXR1cm4gInB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYgKE9wOjpv
cGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICJwdXRf
cHJpdmF0ZV9uYW1lIjsKKyAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9OworCiAg
ICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAg
ICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAg
ICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMn
IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9k
aXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAi
QmFzZWxpbmUgJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLCBvcGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgp
LmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZh
bHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAorICAg
IGF1dG8gZ2VuZXJpY0Z1bmN0aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgaWYgY29u
c3RleHByIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgZ2Vu
ZXJpY0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25E
ZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7
CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hD
YWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0
clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtp
bmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVM
b2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlv
bikpOwogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0
cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0IG9mZiB0
aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28gd2UgbGlz
dCBvZmYgdGhlIHRocmVlIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVt
cGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRC
eVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhD
YWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQ
dXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFsSW5mbyos
IFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2YTJiNWFhZDUyZjM0
ZWY3NThkZjk0MzBhYWViNS4uMzRlZjM2MWNkZGNjZTZlMTQ2OTcyOWRhMzk5ZjZiN2NkODgzNjFj
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCkBAIC0yODcsNiArMjg3LDUwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9j
b2RlQmxvY2stPmFkZEJ5VmFsSW5mbygpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCBy
ZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQ
YXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsK
KworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUlu
ZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87
CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOwor
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVs
KCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFs
dWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BS
KCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHByb3Bl
cnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExv
YWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7Cisg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VSZWdz
LCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2lu
ZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwor
ICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVj
dGlvbik7CkBAIC02NjQsNyArNzA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29k
ZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYzUyM2U4
YTYwMDZkZGM1M2QyNTk5YTRkMjRjNmU5NGI1NGRjYWRiZC4uOGQ3OWNhNzE1ZDI1OTZjOWFhNGZk
MzZiZTI3NWI4MWJmYTRkNTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU4LDkgKzU4LDkgQEAKICNpbmNs
dWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRG
bGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRC
eUlkRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGMxMjYzZmZhMDNjZjA2MGFjYzYz
NzM0ODY4MjJjNzFhOWY3ZjY5ZWEuLmY5MDgyODI5NjZlM2Y4NjI3ODVlNTYyZDIwMTA2MGFlZjFl
MTUwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcApAQCAtMTE3Nyw0OCArMTE3NywxMjYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZh
bHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUo
KS5pc1N0cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5t
X2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBi
eXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNT
RVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwog
ICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91Ymxl
KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRv
dWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwotICAgICAgICB1
aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3Jp
cHRBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRB
c1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAgICAgICAgYmFz
ZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwg
dmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXRE
aXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmlu
ZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChwcm9wZXJ0eS5p
c1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwg
MCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQcml2YXRlRmll
bGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZh
dGVGaWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVG
aWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOyAg
ICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJl
aWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
CiAgICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1
ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5
IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNz
IG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJp
Y3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Cisg
ICAgaWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlzU2V0KCkp
OworICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJhc2VWYWx1
ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAgICAgJiYg
c3Vic2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nl
c3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwor
ICAgICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1By
b3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOworCisgICAg
ICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIp
KSB7CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dh
dGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9s
eSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJhcmVEYXRh
KCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmly
ZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgb3V0
IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0
cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICBt
ZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0
eS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+
c3RydWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgewor
ICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVy
dHkpIHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9m
TGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5w
cmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFz
YXdQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3
U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
cHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBh
c3NlcnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRvIGRpc2Fi
bGUgY2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0aGVuIHN0
b3JlIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZworICAgICAg
ICAgICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3ZSByZWlm
eSBhIGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRvIGRpc2Fi
bGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRv
ZXMgbm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMg
b2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAgICAgICAg
ICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
IG5ld1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hl
ZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxv
Y2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZjMzA4ZDlm
M2RkZTI1YjlmZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFlMThjYmZl
ODMzZjNhOWMxY2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZDk0MTEy
YjgxYTljOTBmNzgzNDFhODA1ZWUzMjA0NWE1YzBlMDY0NS4uZWU3NDBkMWIxZWY4NmNiNDM4MzQ1
MTQyZjdkMzk2MmZiYTFlMDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYwNiw2ICs2MDYsMTMg
QEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRBZnRlclNs
b3dQYXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5k
V2l0aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xvd1BhdGgp
CisgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisgICAgd3Jp
dGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKy53cml0
ZUJhcnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBn
ZXQsIGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFy
cmllckRvbmUpCkBAIC0xNjM4LDYgKzE2NDUsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMK
ICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZh
dGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1f
YmFzZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xv
dykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAg
bWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVO
YW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQ
dXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAj
IHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAg
ICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRh
OjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0
aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0
ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQor
ICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0
MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQx
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRh
ZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5z
aXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2gg
aG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUp
CisgICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2ZmUxNzMwNzhjYWMzYzFjYzE5MTQ4MDYzNmQy
NzdlYmJmYWEzNTQzLi5mYWZmNzQyM2ZhMTU1Y2E1MjhjNzVkOGM0OWE2ZmZjNGIzOGE4ZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
CiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2
YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdl
dChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0
MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0
MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRl
TmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3Bl
cnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisg
ICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAg
ICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisg
ICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVd
LCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhS
ZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFk
YXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBi
YXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlv
bjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xk
cyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDAsIHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1f
dmFsdWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRj
aCgpCitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBv
c3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9w
Y29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYTEyMzc3YTliMTNlOTFiZmYzY2EwNzJkMmQzNzkwNmY5ZTZjYjYzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91
dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNkYzRjYTMwNDhlYzdk
YTAxZGJhMGQwYWFmYzg0YmI1Njc1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50U3RyZWFtOworfTsK
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQdXRLaW5kIHsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IFNldCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERlZmluZSA9IDI7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZnJv
bUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKGJ5dGUpOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIG5vbmUoKSB7IHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2
YXRlRmllbGRQdXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoU2V0KTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBkZWZpbmUoKSB7IHJl
dHVybiBQcml2YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vbmU7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFNldDsgfQor
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUg
PT0gRGVmaW5lOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCh1aW50OF90
IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQo
bV92YWx1ZSA9PSBOb25lIHx8IG1fdmFsdWUgPT0gU2V0IHx8IG1fdmFsdWUgPT0gRGVmaW5lLCBt
X3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNmFiYTljZWJjNDIyOGJhZTAzNmY0YjRmNDI3ZTBlNzc5MTMzMzk3OC4uYWNkNDI2
YzA4MWIwZGZmYzVmMmQ5ZjFiNmMwYTRkYTljZWM2ZWQyMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0w
Ny0yMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ11b
RVNOZXh0XSBDcmVhdGUgYSBuZXcgb3Bjb2RlIHRvIGhhbmRsZSBwcml2YXRlIGZpZWxkcyBzdG9y
ZS9kZWZpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkanVzdGluZyB0ZXN0cyB0aGF0IGVtaXQgYGdldF9wcml2YXRlX25hbWVgIHRvIGF2b2lkIGV4
ZWN1dGlvbiBpbgorICAgICAgICBGVEwvREZHLgorCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQt
cHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1j
b25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLW9zci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9s
eW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRp
Zmllci5qczogQWRkZWQuCisKIDIwMjAtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBCaWdJbnQgY2FuIGJlIGBmYWxzZWAgaW4gYm9vbGVh
biBjb250ZXh0IGluIERGRyBBSQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1w
cml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBp
bGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsg
IiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
dGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2Vw
dGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQg
PSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwg
InAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRo
aXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlz
WyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0
aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAg
fQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNl
dEZpZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRG
aWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1nZW5lcmljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJkNmMyOTljNjYyNzBiYWJjYTNkMDA3YjdhNzgzMDk3NzI3OTRkNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMu
anMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKGR5bmFt
aWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSB0aGlzLmluaXQo
KTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNbZHluYW1pY1Byb3Bl
cnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdl
dEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citu
b0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJvcGVydHknICsgaSk7
CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0ZXN0Jyk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MzJiNmMwNTExOTJlMTEwYjMwMWM0Yzg2MzdiZDkwNmM5ZmQ3ZDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCkBAIC0w
LDAgKzEsNDMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9
dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiAr
IGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uIChleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShlIGluc3RhbmNlb2YgZXhj
ZXB0aW9uLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworbGV0IHNob3VsZFN0b3JlID0g
ZmFsc2U7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhp
cy5pbml0KCk7CisgICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3Rv
cmUpCisgICAgICAgIHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcg
QygpOworfQorbm9JbmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7CisgIGlmIChpID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3Nl
cnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsK
KyAgfSBlbHNlIHsKKyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3lt
Ym9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBp
bGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlmMWI4
MGIwMmZjMGE3MTk1NDdlN2EyMWRiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1i
b2wuanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBi
dXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwg
ZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNl
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQg
ZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0Rmll
bGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisg
ICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAg
ICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBu
b0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBD
OworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBm
YWN0b3J5Q2xhc3MoKTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMy
LmdldEZpZWxkKCksICd0ZXN0Jyk7CitjMi5zZXRGaWVsZCgnZm9vJyk7Cithc3NlcnQuc2FtZVZh
bHVlKGMyLmdldEZpZWxkKCksICdmb28nKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rlc3Qn
KTsKK30pOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLnNldEZp
ZWxkLmNhbGwoYywgJ3Rlc3QnKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLW9zci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
b3NyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExNjk1YTFhZGUzNzY5YzYxNGRkYzkzMDEzMmVhZjg4ZTIxZWMy
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9z
ci5qcwpAQCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSA+PSA1
MDAwKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3lt
Ym9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjZmM1MzY0Y2E5ZTAyY2U5NTIzYmFjNDE1YzE4MDE0NmUxNTY4
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBv
bHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKwor
bGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAg
IGluaXQoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZp
ZWxkID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2
KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9y
ICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNl
dEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdm
b28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtc2V0LWJlZm9yZS1kZWZpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXNldC1iZWZvcmUtZGVmaW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MDZhNzFmYTkwN2FkMTVjMTQzZjFi
N2U3Zjg4Mzk0ZDBhNzczNWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4
ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUg
PSBmYWxzZTsKKworZnVuY3Rpb24gZm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0
aGlzLmluaXQoKTsKKyAgICAjZm9vOworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRT
dG9yZSkKKyAgICAgICAgdGhpcy4jZm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5l
dyBDKCk7Cit9Citub0lubGluZShmb28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAg
fSBlbHNlIHsKKyAgICBmb28oKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5q
cwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9ICd0ZXN0JzsK
KworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKwor
ICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQor
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7
CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRl
bnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAg
IGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUg
KyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRp
b24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0
RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAg
ICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAg
bm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4g
QzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJh
dGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOwor
ICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405381</attachid>
            <date>2020-07-28 11:23:11 -0700</date>
            <delta_ts>2020-07-28 12:19:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200728152305.patch</filename>
            <type>text/plain</type>
            <size>124665</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODI5ZjM5NWY3YjViZmJjNDRkMDU5ZWYzZjQ1ZmU5ZjQyOWFmNmU1Li5lMzJkYzA0NGU1OWQ0NTli
OTk0ZmM0ZjlkODc0YWZlYjhkNmI5YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTkgQEAKKzIwMjAtMDctMjMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMsIGluY2x1ZGluZyBMTEludC4KKyAgICAgICAgSXQgaXMgYWxzbyBhZGRpbmcgYSBuZXcg
REZHIG5vZGUgYFB1dFByaXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBj
YXNlIG9mIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQor
ICAgICAgICBgcHV0X3ByaXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBh
cmUgdXNpbmcgd2l0aAorICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRy
eSB0byBjb21waWxlIGl0IGFzIGBQdXRCeUlkRGlyZWN0YAorICAgICAgICB1c2luZyBwcm9maWxl
ZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0Cisg
ICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lYCBub2Rl
LiBUaGlzIG5vZGUgZG9lc24ndAorICAgICAgICBoYXZlIGFueSBvcHRpbWl6YXRpb24gaW1wbGVt
ZW50ZWQgeWV0LCBhbmQgaXQgYWx3YXlzIGRvIGEgc2xvdyBwYXRoCisgICAgICAgIGNhbGwuIFRo
ZSBjYXNlIHRoYXQgZGlzYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBwdXRfcHJpdmF0ZV9uYW1l
YCBhcworICAgICAgICBgUHV0QnlJZERpcmVjdGAgaXMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGV2
YWx1YXRpb25zIG9mIHRoZSBzYW1lCisgICAgICAgIGNsYXNzLCBidXQgc3VjaCBwYXR0ZXJuIG1p
Z2h0IG5vdCBiZSBjb21tb24uIElmIHRoaXMgaHlwb3RoZXNpcyBzaG93cworICAgICAgICB0byBi
ZSBmYWxzZSwgdGhlcmUgaXMgc3BhY2UgdG8gb3B0aW1pemUgYFB1dFByaXZhdGVOYW1lYCBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4
SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJv
cGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5l
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2
YXRlRmllbGRQdXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6UHV0QnlJZERpcmVjdERhdGE6OlB1dEJ5SWREaXJlY3REYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpQdXRCeUlkRGlyZWN0RGF0YTo6YXNXb3JkKToKKyAgICAgICAgKEpTQzo6REZHOjpQdXRC
eUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICog
Z2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21w
aWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVO
YW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNO
b25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIw
MjAtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBCaWdJbnQgY2FuIGJlIGBmYWxzZWAgaW4gYm9vbGVhbiBjb250ZXh0IGluIERGRyBBSQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2Ew
ZThkYjJiNDhkNzI2Mzc3OGRjMTUuLjlmZDQ5NWMzZGQwNjk5MDdhNWFlNzU4ZjBhMWQyZjhlM2Ex
ZjM3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0Myw3ICs1NDMs
NiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5
dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAg
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAg
ICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgK
ICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtOTY5LDYgKzk2OCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9PcHRpb25z
LmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1lL1BhcnNlSW50LmgKKyAg
ICBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaAogICAgIHJ1bnRpbWUvUHJpdmF0ZU5hbWUu
aAogICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmExYTg3OTQ3ODM1
ZDJhOWUwMTVjOGFjNTQxYmJmYmY5MzU1N2UxOS4uMGMwMjk0NWQwMmZlZjhkNzllZWRmNWY3NTEy
M2U5OTBiM2Q4YjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTYsNyAr
MTI1Niw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2
QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlG
NiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZB
Mzc1OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2NSw2ICsxMjY0LDcgQEAKIAkJODZBREQx
NDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyog
QVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZE
REVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBN
YWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2
Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIx
M0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTM2LDggKzQxMzYsNiBAQAogCQk4NjcwNEI4MTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0
ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJu
LmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFy
clBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFn
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFG
RjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4
RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQxNTcsNiArNDE1NSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2
RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1
IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0
S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2
YXRlRmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0
MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTg2LDYgKzc1ODYsOCBAQAogCQkJCTM3
QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovLAogCQkJCUNFMjBCRDAyMjM3
RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwICov
LAogCQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5n
RnV6emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdDOTUgLyogUHJpdmF0
ZUZpZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFBy
aXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyog
UHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9n
cmFtRXhlY3V0YWJsZS5oICovLApAQCAtODQ1Nyw4ICs4NDU5LDYgQEAKIAkJCQkwRjkzMzI5QTE0
Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJD
NEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0JCQkJODY3NkM2RTcyMzQ2NDVCMzAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZB
QUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUw
IC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29y
ZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMTc4LDYgKzEwMTc4LDcgQEAKIAkJCQlDRTIwQkQwNzIz
N0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAwOUUgLyogUHJldmVudENvbGxl
Y3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5
IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5
NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1
NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTBB
QUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwMjE4LDcgKzEwMjE5LDYgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyog
UHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYz
QzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU5MGRiNDI4
NzU0MWFjNGUzMTdlYmRiZGZkMjc2ZGE1NzM0MmNlN2UuLmYyZDNkMjUwZjQ1ZTEzODIyMjNmZjkx
YzkwZWY0NTkyMzg0YTVlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw3
ICsyNjgsNiBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAotYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCkBAIC05MzYsNiArOTM1LDcgQEAgcnVudGltZS9PYmplY3RUb1N0
cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKIHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1
enplckFnZW50LmNwcAorcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDU4Nzg0NWZkNTBlMzJlYmZiZWU2ZGJkOGQ2ZWYx
MDU5NGFiM2QxYzUuLjk2ZTNlZGNhYWM0MTcwMGI4NmFiZGNkZWU0Zjg1MjMyODMwMmRkYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
NDYsMTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJl
c3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwK
ICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAg
IDpQdXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAog
ICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTczLDYgKzU3MywyMCBAQCBv
cCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0Nl
bGxdLAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAg
ICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFBy
aXZhdGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJb
SlNDZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewog
ICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01OTgsNyArNjEyLDcgQEAgb3AgOnB1
dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDVmNTg2NThhMmU2YjFlNDQ2ZDgzYTIxMDAwMjg1M2ViMjM4Y2M0
MWIuLjY5MjhmN2Y4ODY5YzRlZjNiYTU1OGFlZTU1Mzc2YTEzNjE3NTkyZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI2
LDYgKzIyNiw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0
b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwg
YmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0
eSkKKyAgICBVU0VTKE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAg
ICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hh
c0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5z
dGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTM5NCw2ICszOTUsNyBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydQogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBv
cF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBv
cF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAg
IGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDc5YzUwNWY0ZDJmNTMxZmVlZDcxM2NhNDM2NDVmYjc5YWMxOGNiZDkuLjUwMjg5
YTcyNTkzYjFhOGNmYTRhZDg3YzM4NTUxMmJlYjliYTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50
cywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUpCiAg
ICAgICAgIExJTksoT3BHZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFByaXZh
dGVOYW1lLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJvZmls
ZSkKICAgICAgICAgTElOSyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKQEAgLTU0MCw2ICs1
NDEsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkK
ICAgICAgICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3Qp
CisgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJy
YXkpCiAgICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNCw2ICsxMTM2LDI1
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAu
aXNNYXJrZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAg
aWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0
YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG5ld1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChv
bGRTdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTMwMCw2ICsxMzIxLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5l
Q2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsK
ICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVO
YW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAg
ICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAg
ICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiQ2xlYXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX29mZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0g
MDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7
CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIy
YTM4MmJmNmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAi
T3Bjb2RlU2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRl
ICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgot
I2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5j
bHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0
ZXIuaCIKQEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXpl
PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8
UHV0QnlWYWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBU
eXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlz
IDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAg
ICBpc1N0cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAg
PCBpc0RpcmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
aXNTdHJpY3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZh
bEZsYWdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFRhcmdldFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwot
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1v
ZGUoKS5pc1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAg
ICAgICAgcmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAg
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAg
ICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJp
dCk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lz
U3RyaWN0Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmll
bGRBY2Nlc3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19w
cml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNT
dHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAg
IHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAg
ICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2
YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZp
ZWxkKGVjbWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVT
aXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihF
KSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBw
dWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcg
QmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCAr
Mzg3LDI0IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4
X3QsIHNpemU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3Qs
IHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0
YXRpYyBib29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0
YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52
YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0
KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsK
KyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDhlOTBmZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKLQotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQotewot
ICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOwotICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQot
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3QiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2
YXRlRmllbGRQdXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1
dCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YWRmMmQxYjM2YzYxY2UzMDJiZjljMjM4MjU2YTcw
NTY4NzY2N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFQ01BTW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNs
YXNzIFB1dEJ5VmFsRmxhZ3MgewotcHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlW
YWxGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0
IHB1dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNr
aW5nIGlmIHRoZQotICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsK
LSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5l
UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZh
dGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQot
ICAgIGJvb2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNN
QU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kOjpQdXQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0
ZTsgfQotCi1wcml2YXRlOgotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSkKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2Vz
cywgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFN
b2RlIG1fZWNtYU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNjgwNmYzOTU1NmNhZDE1ZThmNzNkY2Q1YTRkZDU3ODQ3ZjZhZGMzZi4uYmI2
Zjg0MjQxMjRiMTU2MzMzMjA5ZTI5ZTBhNGE0NzMxY2JmZGRkYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMu
aCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZh
bENvZGVCbG9jay5oIgpAQCAtMjcxMiw3ICsyNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRC
eVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkp
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjczNiwxMyArMjczNywxMyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVG
aWVsZChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJp
dmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGY0YTgyNzg5MmVlNzg5YTZiMTRiYzBlNGQ1
YzA2OGFlMzUyNWQ5ZTMuLmQ4Y2ZmYzUwOWJiZjE5MjBkYWNlYTAwMGQwNGQxNzE1MzNjOGM2OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQwNzQsNiArNDA3NCw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlz
OgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYWM0Nzc1ODRiNDg3MDVlNzMxMTQ3ZjhkY2Yw
ZGY3NzQxODRhZGIzMS4uNjI0YjliMzAwMGMyZjA5Zjc5MjIzM2JiNWNjNDY1NDg5MjZlNjM0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTcwLDkgKzcwLDkgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNp
bmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5o
IgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0yNDcsMTAgKzI0NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAotICAg
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CisgICAgICAgIE5vZGUq
IGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0
YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKICAg
ICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRC
eUlkU3RhdHVzJiwKLSAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0
SW5kZXgsIEVDTUFNb2RlKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kID0gUHJpdmF0ZUZpZWxk
UHV0S2luZDo6bm9uZSgpKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNNQU1vZGUp
OwpAQCAtMTI2NywxOCArMTI2Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNl
T1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Ci1F
Q01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNv
ZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQotewot
ICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0KIEJhc2ljQmxvY2sq
IEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgxMiwyMiAr
NDgwMCwyMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogfQogCiB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVz
JiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewot
ICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKLSAgICBlbHNl
CisgICAgaWYgKGlzRGlyZWN0KSB7CisgICAgICAgIFB1dEJ5SWREaXJlY3REYXRhIGluZm8oZWNt
YU1vZGUsIHByaXZhdGVGaWVsZFB1dEtpbmQpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRE
aXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGluZm8uYXNXb3JkKCkpLCBiYXNlLCB2
YWx1ZSk7CisgICAgfSBlbHNlCiAgICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtl
c0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9w
SW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLAotICAgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2RlSW5k
ZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBjb25zdCBQdXRCeUlkU3Rh
dHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJ
bmRleCwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxk
UHV0S2luZCkKIHsKICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJ
ZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7
CiAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9H
cmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC00ODM1LDcgKzQ4MjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0
YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFu
dHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7
Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUs
IHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNDg0NCw3ICs0ODMzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhd
LmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGVjayhwdXRCeUlkU3RhdHVzW3Zh
cmlhbnRJbmRleF0uY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
ZWNtYU1vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmll
bGRQdXRLaW5kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTQ4ODcsNyArNDg3Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwg
T3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwg
YmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAg
ICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSwgcHJp
dmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
NDk1MCwxMSArNDkzOSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAg
ICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgYWRkVG9H
cmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0
YXR1cykpLCBiYXNlKTsKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0Nl
bGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICgh
bG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00OTk4LDcgKzQ5ODgsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBkZWZhdWx0OiB7Ci0gICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBp
c0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQ
dXRLaW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNjA0Nyw2ICs2MDM3LDYw
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAg
ICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCBj
b21waWxlZEFzUHV0QnlJZCA9IGZhbHNlOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCk7CisgICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgo
KSkpLmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5
dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVj
b21lcyBudWxsLgorICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlz
IG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAorICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgYnlWYWxJbmZvLT5zdHViSW5mbworICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc1B1dEJ5SWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGJ5VmFsSW5mby0+Y2FjaGVkSWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRp
Zmllck51bWJlcl07CisgICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVu
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2Vs
bCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb3plbiA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIXVpZC0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJlbnRDb2Rl
T3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0RpcmVjdCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQorICAgICAgICAgICAgICAgICAgICBo
YW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgbmV4dE9wY29kZUluZGV4KCksIEVDTUFNb2RlOjpzdHJp
Y3QoKSwgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFjb21waWxlZEFzUHV0QnlJZCkKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFBy
aXZhdGVOYW1lLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURh
dGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKQEAgLTgyNjAsNyArODMwNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5k
bGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOwor
ICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNv
ZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpA
QCAtODI3MSw3ICs4MzE1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwo
Qnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8g
TGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
bnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAg
ICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQ
dXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2Vj
bWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRC
eVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUs
IHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxYzZjNjZm
ODAyMzVjZjk2OWViYjIzMTYxOTNjZDgzNDcwZDhjNDM1Li5hZDlmMjRjNTA4NjY4ZjA0NGQ0NTUz
MmJlMzY1ZDMxNTc1OThlYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yOTIsNiArMjkyLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9z
YW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9w
dXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAog
ICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9u
J3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRl
ZThlOTBmZTgxNDFkYmIxY2NiZDliNTMzN2VlLi43MDAxNmNjZTgwN2RhZTYwODkyZmQ3OGZlZThm
MWMyMzVhOGI5OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aApAQCAtNjY2LDYgKzY2Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQ
dXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQ
dXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5l
RGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNl
IERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
NzNjNzhlMzc1Yjk4OWVlZGUxZmJjYmZkMTNmZDQ2ZDdlZDBmMmUyMC4uOTA0ODVmMGJiYjQ3NWM0
YzliZTEzNTU3OThiNTYwNjZlYjI5MDkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRT
ZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZToKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAg
Y2FzZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggOTBlOWIxMzRlZWEwMjE4OTc0M2NmMTQxYTdkOWE2ZjJlNzE2YjA0My4uN2I2
YTExOWRmZDlmMDMxMDFlNTU1N2Y4MmQ0MGY3YTE1ZjFlOWU3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAg
ICAgICAgY2FzZSBUeXBlT2Y6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAg
IGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAg
ICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKaW5kZXggZGQwZDEyZGFmOGQ5YTE5YzQxOGEwZGMzZDQ5MWNjYjcwMDQ0YWVmNy4uYTU4N2M3
MWZkZmQ2MmNiNzY2MTU4M2FmNTZkYWQ5NzI3M2YxYjIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgog
I2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBA
IC0xMzYsNiArMTM3LDI5IEBAIHN0cnVjdCBEYXRhVmlld0RhdGEgewogfTsKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCitzdHJ1
Y3QgUHV0QnlJZERpcmVjdERhdGEgeworICAgIFB1dEJ5SWREaXJlY3REYXRhKEVDTUFNb2RlIG1v
ZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkKKyAgICAgICAgOiBlY21hTW9kZShtb2Rl
KQorICAgICAgICAsIHByaXZhdGVGaWVsZFB1dEtpbmQocHV0S2luZCkKKyAgICB7CisgICAgfQor
CisgICAgdWludDE2X3QgYXNXb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHByaXZhdGVGaWVsZFB1dEtpbmQudmFsdWUoKSkgPDwgOCkgfCBlY21hTW9k
ZS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBQdXRCeUlkRGlyZWN0RGF0YSBmcm9tV29y
ZCh1aW50MTZfdCB3b3JkKQorICAgIHsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01B
TW9kZTo6ZnJvbUJ5dGUod29yZCAmIDB4ZmYpOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5k
IHB1dEtpbmQgPSBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSgod29yZCAmIDB4ZmYwMCkg
Pj4gOCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkRGlyZWN0RGF0YShlY21hTW9kZSwgcHV0S2lu
ZCk7CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGU7CisgICAgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwcml2YXRlRmllbGRQdXRLaW5kOworfTsKKwogc3RydWN0IEJyYW5jaFRhcmdldCB7CiAg
ICAgQnJhbmNoVGFyZ2V0KCkKICAgICAgICAgOiBibG9jayhudWxscHRyKQpAQCAtMjI3MSw3ICsy
Mjk1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZSht
X29wSW5mby5hczx1aW50OF90PigpKTsKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAg
ICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2Fz
ZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBj
YXNlIFB1dEJ5VmFsOgpAQCAtMjI3OSwxMiArMjMwMiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAg
ICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOwor
ICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZERp
cmVjdERhdGE6OmZyb21Xb3JkKG1fb3BJbmZvMi5hczx1aW50MTZfdD4oKSkuZWNtYU1vZGU7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKICAgICAgICAgfQogICAg
IH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAg
IGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICAgICAgICAgIHJldHVybiBQ
cml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWREaXJl
Y3REYXRhOjpmcm9tV29yZChtX29wSW5mbzIuYXM8dWludDE2X3Q+KCkpLnByaXZhdGVGaWVsZFB1
dEtpbmQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmlu
ZSgpOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggZTJjNDhhZWU1ZjBkYTkyOGJhOTQwNThlMTQxYzNlNWVkN2NlNDU2Zi4uZjdi
NzY0Nzg3M2M2ODU2NTRlZDk4NTI2Y2ZhNzEzYmJmZDY2NzFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjA5LDYgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1l
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdl
NTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOS4uNDMzNTI2NTliMmFlMGFjMzU5N2Q5ZDVkYTg4
OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE9wSW5mbyB7
CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkg
eyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsg
fQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFN
b2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5k
IHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggZDEwNzZkNGU5MTRlNzA1ODg3NWI0NTI2ZTRjNDNkOGRjMzJjY2YyYS4uMTkx
MmZjNThiMzU4YWY3MDdkMjA3OGVkNWJmYjAzOGVlNjI1NGZiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTEzNzMsNiArMTM3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlW
YWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0
Q2xvc3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNl
IFB1dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAppbmRleCAwNDBkM2YzY2M4ZDRiNDE5NzcyYzlhMWFkNjhiNmU0YmQ5MjM3OTFmLi5k
ZTE2N2U1MzJiNWY5Y2FmZDVjM2I4YTMyNTlkOWMzZmM4NmJiMzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI1LDYgKzUyNSw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAg
IGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2Ug
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2ZWM5ZTA0NzZk
ZTFiMWY1MmNiZWNmOGU1MzkwZDA0NjA4ZDMyZWM5Li43MTFmMGE3ZDQ2NmQxMTRkNGFmMTEyMTg2
MzExNGQ1Y2U1ZGQ1MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMzUyMSw2ICszNTIxLDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFs
dWVSZWdzKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHlWYWx1ZS5q
c1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MygpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwor
CisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPnByaXZhdGVG
aWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5l
cmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkK
IHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTEyNzIyLDcgKzEyNzM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIo
KTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1i
bGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIFByaXZhdGVGaWVsZFB1
dEtpbmQ6Om5vbmUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTI3MzcsNyArMTI3NTMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQcml2YXRl
RmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjc1
Miw3ICsxMjc2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0
KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNo
ZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3Jh
dGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJl
Y3QsIG5vZGUtPmVjbWFNb2RlKCksIG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTE0MzgyLDcgKzE0Mzk4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9k
ZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtp
bmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQ
dXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9
PSBEb250U3BpbGwpIHsKQEAgLTE0Mzk0LDcgKzE0NDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBK
U1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAog
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAg
ICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgcHJpdmF0
ZUZpZWxkUHV0S2luZCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2NjI1
ZDYzOTZhNWVlZGVhZmVkNTZjNjQwZmE4NzlmYzRlMTFjY2E3Li43ZmRiODhhZjllMDFhZTEzNjIy
ZmY4ZDBhODE3MjMzODIxYzk0ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tcGlsZUNoZWNrTmV1dGVyZWQoTm9kZSopOwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01v
ZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgp
LCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRC
eVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTM2MCw2ICsxMzYwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwg
RWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBj
aGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9m
ZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGExZjMxYWI0NDkx
ZTFjMTQ3NjhlNzBiOWI2NWFkZjJkMGMzYjdmZTIuLjc0MTE0MGYyOTEzYzEyNmQxZGRlNDU0N2E4
NWU5MWY5ZWE0MmU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5Niw2ICsyNTk2LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5h
bWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IDA2YTA4MWNhZGNlMmFmNDhhYTVlZjAzNWI5YzIxODRiMTdkYTY2MzIuLjUyMTUzZjIxNTg2MDU1
M2E1NTI0ZTQ4ZGUwZjAxMWFmMDQzNzRiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjkxOSw2ICsyOTE5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJp
dmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5
NmE3ZjE2NDE0NjBhNTJlODI2ZTVjOTM3Y2ZjZDg1NGQzOWJkNDJlLi45NWI1YTNkNWVjYmI5OGQz
YjQ4YWY0ZDJhNGI5NzA3MzExNGUzYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTMsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgog
ICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjcxMjIw
ZmNlZjkxOGM5ODRmOGFiZmM3NjA4NjAzZmQyYTBhOTYyMi4uOTE3NGU2NzZhZDQzNGY5YWRkMTM3
YTNiYzg1ODZhYWI5YzI0MTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtMTAxOCw2ICsxMDE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRo
aXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAg
ICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAgLTM5NDMsNiArMzk0NiwxNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhp
c1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAg
ICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkg
PyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRl
TmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5jb25zdEludDMy
KEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxl
QXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwpAQCAtNDIxMyw2ICs0MjI3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSog
c3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5l
Y21hTW9kZSgpOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtp
bmQgPSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBub2RlLT5wcml2YXRlRmllbGRQdXRL
aW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAgICAgIAogICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIzMSw3
ICs0MjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVn
cyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJh
bXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGly
ZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGly
ZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5y
YgppbmRleCBkOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAw
OTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJlNzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2lu
Y2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVk
ZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyMWFkNzZjZjIwNDU0ZTJm
OTg3YjBmMDAyM2Y1OWVjMDBhZmM4YWFjLi4yOTZjNzFiMjIwMmIyYjRlZjBhZmRhMWJkNDUwMDk1
MmM5NGY5ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MjUsNiArNDI1LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkBAIC01ODUsNiArNTg2LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZGVsX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikKQEAgLTkwMCw3ICs5MDIsMTIgQEAgQ29t
cGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1w
ID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYg
KEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5v
dEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsK
LSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxD
b21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1w
OworICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1w
KS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1
dG8gZG9uZVRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8u
ZG9uZVRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsK
ICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCA0NzhjYzA3ZWM2ZjU1MmQyNDYyNTRjZWMzMTAwM2ViNjY1ODZiOGQyLi43ODc0N2Y1
Nzc2ZjQxOGRkOGNmNGUwMzFhZmM0MTg3ZDkxNGU3M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTE2MSw2ICsxNjEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgfQogCisgICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIG5vdEluZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJnZXQsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgICAgIDogYnlWYWxJ
bmZvKGJ5VmFsSW5mbykKKyAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KQorICAgICAgICAgICAgLCBub3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQorICAgICAgICAgICAg
LCBkb25lVGFyZ2V0KGRvbmVUYXJnZXQpCisgICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0
KG5leHRIb3RQYXRoVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBCeVZh
bEluZm8qIGJ5VmFsSW5mbzsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4Owog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXA7CkBAIC00
MDYsNyArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gRGV0ZXJtaW5lcyB0
aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJp
dmF0ZUZpZWxkUHV0S2luZChPcCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxw
ZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlWYWxJZGVu
dGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwpAQCAtNjAzLDYgKzYxMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Myw2ICs2OTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
c3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDIzNjgzMDQ1ZjFmZDFmNmFhNDVlNjFkNjM4OWFlZjFmYzI4MjAxZTYuLjdmN2U0NDk1
YjYxMzM3OWM1YTE0MmY1MzRhMjg1MzExM2I1YjAyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEg
KzEzNiwxMSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJ
ZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRL
aW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRQ
dXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQpCiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdp
c3RlcnMsIGJhc2UsIHZhbHVlKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAg
ICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRQdXRL
aW5kKHByaXZhdGVGaWVsZFB1dEtpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVy
cy5jbGVhcihzY3JhdGNoKTsKIH0KQEAgLTE1MiwxMCArMTUyLDEwIEBAIHZvaWQgSklUUHV0QnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJ
VE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24o
KQogewotICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZSkgeworICAgIGlmICghbV9wcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgp
KSB7CiAgICAgICAgIEFTU0VSVChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKICAgICAgICAgQVNTRVJU
KG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQorICAgICAgICBpZiAobV9w
cml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaAppbmRleCA3MzI5ZDZiNzM4MTRkNmM0YmE1NTJhNTg5M2U3MmIwMjFlNmE1MTIwLi4yZGZm
NWZkNDdhNzg4YTY0NWNmOWMyNDdjOTdiNTgyNzUwNThjY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEs
MTIgKzEzMCwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6
IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fcHJp
dmF0ZUZpZWxkUHV0S2luZChQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpCiAgICAgeyB9CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFs
dWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgCiAg
ICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUs
NyArMTQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwog
ICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgbV9wcml2YXRlRmll
bGRQdXRLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAppbmRleCBkNTNlNjk3N2QzOWQ3NTllNjc0MTJmZDlhZDFiOWU2NzgyYjk3ZDMxLi45MTUyNjYw
YmY0ZTJkZGVlZTczZDA1NTVhNGE4ZGE0MGQ5ZDM2YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAgQUxXQVlTX0lOTElORSBFQ01B
TW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0
ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVj
dD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21h
TW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBv
cC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRl
RmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiB9CiAKIHRlbXBs
YXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FM
V0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVGaWVsZFB1dEtpbmQ8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkKIHsKLSAgICByZXR1cm4gb3Au
bV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIG9wLm1fcHV0S2lu
ZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBlZjBlODNmNDlkMjk2MGUyZmY3NDM0ZjhhZTBhOGYyMGIz
NTc3NGNjLi5kNzk5YzA0ODQzNDZjMzdlYjQ1MGZiNzJlMmM2NjEzY2RkN2MzZmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTExMDUsNyArMTEw
NSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0
LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQog
Ci0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTExOSw2ICsxMTE4LDEzMiBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09i
amVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsK
IH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRL
aW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOworCisgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxl
SWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3lt
Ym9sKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAh
PSBCeXRlY29kZUluZGV4KDApKTsKKyAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHVi
Um91dGluZSk7CisgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0
UHJpdmF0ZU5hbWU+KHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBEaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAg
ICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9w
dGltaXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAv
LyBTZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmll
cihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJl
c3VsdDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1
bHQ6OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhh
biAxMCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8v
IG5ldmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMg
d29ydGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0
aGUgcHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNv
dW50IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAg
ICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0
aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisg
ICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkg
eworICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVm
aW5lKCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0
UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
CisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNz
IGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0
cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8g
YmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgp
KQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3Qt
PnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxk
cyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8v
IGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBi
b29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmlj
dE1vZGUpOworICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAg
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3
aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBh
bHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7
CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VPYmplY3Qt
PmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1Bh
dGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNGMyMjA1
MzBhYjRkZTViMjZkN2Q5YWQzZDNiODJlM2I0ZGI5N2Q5YS4uYjE2NDg0MTY3MjNjMzg2NzU3NDc1
MWUxNGQxNjNiOTExZDM0NGIxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAi
SklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAj
aW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTE5MywxMCArMTk0
LDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZp
ZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVD
TUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZh
dGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxM
aW5rSW5mbyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggN2UwOTQ0MjA5MjI1NmM4ZWFmNTc4ZGE3YjRlMTk1
MjRjMDFlZDljYi4uZmZmOGE2MjczOTQ1Mjc5N2RiNTRmOWE2ZWEyOGU0ZmJiMTkwOWZjMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpAQCAt
Mjc1LDcgKzI3Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwg
cHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVj
b2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkUHV0S2luZChieXRlY29kZSkpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVy
ZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6
IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRv
IHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zMDUsNyArMzA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7
Ci0gICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVj
bWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0
KQpAQCAtMzI4LDYgKzMyOSw0NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKCk7CisKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hh
YmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJl
bCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVu
ZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBh
dGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2Rl
Lm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xv
d1BhdGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BS
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BS
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRL
aW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVy
QnlJZD4oKTsKQEAgLTY1OSw3ICs3MDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzMTcsNyArMTM1OSw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0
ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtp
bmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xNDI4LDcgKzE0NzAsNyBAQCB0ZW1wbGF0ZSB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBD
b25jdXJyZW50SlNMbwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQogewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6
Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJl
Y3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtp
bmQgPT0gRGlyZWN0ICYmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwg
T3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUpKSB8fCAocHV0S2luZCA9PSBOb3RE
aXJlY3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWwpKTsKICAgICBjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAKQEAgLTE0NTAsMTggKzE0OTIsMzEgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICB9CiAgICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVm
ZmVyLCBwYXRjaEJ1ZmZlcik7CiAKKyAgICBhdXRvIG9wY29kZU5hbWUgPSBbXSgpIGNvbnN0ZXhw
ciB7CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpCisg
ICAgICAgICAgICByZXR1cm4gInB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYgKE9wOjpv
cGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICJwdXRf
cHJpdmF0ZV9uYW1lIjsKKyAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9OworCiAg
ICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAg
ICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAg
ICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMn
IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9k
aXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAi
QmFzZWxpbmUgJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLCBvcGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgp
LmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZh
bHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAorICAg
IGF1dG8gZ2VuZXJpY0Z1bmN0aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgaWYgY29u
c3RleHByIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgZ2Vu
ZXJpY0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25E
ZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7
CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hD
YWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0
clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtp
bmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVM
b2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlv
bikpOwogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0
cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0IG9mZiB0
aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28gd2UgbGlz
dCBvZmYgdGhlIHRocmVlIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVt
cGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRC
eVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhD
YWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQ
dXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFsSW5mbyos
IFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzA0N2QyYjEzOWU2YTJiNWFhZDUyZjM0
ZWY3NThkZjk0MzBhYWViNS4uMzRlZjM2MWNkZGNjZTZlMTQ2OTcyOWRhMzk5ZjZiN2NkODgzNjFj
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCkBAIC0yODcsNiArMjg3LDUwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgfQogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9j
b2RlQmxvY2stPmFkZEJ5VmFsSW5mbygpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCBy
ZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQ
YXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsK
KworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUlu
ZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87
CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOwor
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVs
KCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFs
dWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BS
KCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHByb3Bl
cnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExv
YWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7Cisg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VSZWdz
LCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2lu
ZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwor
ICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVj
dGlvbik7CkBAIC02NjQsNyArNzA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29k
ZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYzUyM2U4
YTYwMDZkZGM1M2QyNTk5YTRkMjRjNmU5NGI1NGRjYWRiZC4uOGQ3OWNhNzE1ZDI1OTZjOWFhNGZk
MzZiZTI3NWI4MWJmYTRkNTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU4LDkgKzU4LDkgQEAKICNpbmNs
dWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRG
bGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRC
eUlkRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGMxMjYzZmZhMDNjZjA2MGFjYzYz
NzM0ODY4MjJjNzFhOWY3ZjY5ZWEuLmY5MDgyODI5NjZlM2Y4NjI3ODVlNTYyZDIwMTA2MGFlZjFl
MTUwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcApAQCAtMTE3Nyw0OCArMTE3NywxMjYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZh
bHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUo
KS5pc1N0cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5t
X2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBi
eXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNT
RVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwog
ICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91Ymxl
KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRv
dWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwotICAgICAgICB1
aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3Jp
cHRBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRB
c1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAgICAgICAgYmFz
ZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwg
dmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXRE
aXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmlu
ZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChwcm9wZXJ0eS5p
c1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwg
MCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQcml2YXRlRmll
bGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZh
dGVGaWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVG
aWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOyAg
ICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJl
aWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
CiAgICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1
ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5
IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNz
IG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJp
Y3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Cisg
ICAgaWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlzU2V0KCkp
OworICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJhc2VWYWx1
ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAgICAgJiYg
c3Vic2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nl
c3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwor
ICAgICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1By
b3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOworCisgICAg
ICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIp
KSB7CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dh
dGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9s
eSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJhcmVEYXRh
KCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmly
ZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgb3V0
IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0
cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICBt
ZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0
eS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+
c3RydWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgewor
ICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVy
dHkpIHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9m
TGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5w
cmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFz
YXdQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3
U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
cHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBh
c3NlcnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRvIGRpc2Fi
bGUgY2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0aGVuIHN0
b3JlIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZworICAgICAg
ICAgICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3ZSByZWlm
eSBhIGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRvIGRpc2Fi
bGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRv
ZXMgbm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMg
b2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAgICAgICAg
ICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
IG5ld1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hl
ZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxv
Y2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZjMzA4ZDlm
M2RkZTI1YjlmZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFlMThjYmZl
ODMzZjNhOWMxY2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZDk0MTEy
YjgxYTljOTBmNzgzNDFhODA1ZWUzMjA0NWE1YzBlMDY0NS4uZWU3NDBkMWIxZWY4NmNiNDM4MzQ1
MTQyZjdkMzk2MmZiYTFlMDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYwNiw2ICs2MDYsMTMg
QEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRBZnRlclNs
b3dQYXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5k
V2l0aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xvd1BhdGgp
CisgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisgICAgd3Jp
dGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKy53cml0
ZUJhcnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBn
ZXQsIGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFy
cmllckRvbmUpCkBAIC0xNjM4LDYgKzE2NDUsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMK
ICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZh
dGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1f
YmFzZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xv
dykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAg
bWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVO
YW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQ
dXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAj
IHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAg
ICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRh
OjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0
aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0
ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQor
ICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0
MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQx
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRh
ZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5z
aXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2gg
aG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUp
CisgICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2ZmUxNzMwNzhjYWMzYzFjYzE5MTQ4MDYzNmQy
NzdlYmJmYWEzNTQzLi5mYWZmNzQyM2ZhMTU1Y2E1MjhjNzVkOGM0OWE2ZmZjNGIzOGE4ZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
CiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2
YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdl
dChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0
MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0
MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRl
TmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3Bl
cnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisg
ICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAg
ICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisg
ICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVd
LCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhS
ZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFk
YXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBi
YXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlv
bjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xk
cyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDAsIHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1f
dmFsdWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRj
aCgpCitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBv
c3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9w
Y29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYTEyMzc3YTliMTNlOTFiZmYzY2EwNzJkMmQzNzkwNmY5ZTZjYjYzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91
dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNkYzRjYTMwNDhlYzdk
YTAxZGJhMGQwYWFmYzg0YmI1Njc1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50U3RyZWFtOworfTsK
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQdXRLaW5kIHsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IFNldCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERlZmluZSA9IDI7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZnJv
bUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKGJ5dGUpOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIG5vbmUoKSB7IHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2
YXRlRmllbGRQdXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoU2V0KTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBkZWZpbmUoKSB7IHJl
dHVybiBQcml2YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vbmU7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFNldDsgfQor
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUg
PT0gRGVmaW5lOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCh1aW50OF90
IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQo
bV92YWx1ZSA9PSBOb25lIHx8IG1fdmFsdWUgPT0gU2V0IHx8IG1fdmFsdWUgPT0gRGVmaW5lLCBt
X3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNmFiYTljZWJjNDIyOGJhZTAzNmY0YjRmNDI3ZTBlNzc5MTMzMzk3OC4uYWNkNDI2
YzA4MWIwZGZmYzVmMmQ5ZjFiNmMwYTRkYTljZWM2ZWQyMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0w
Ny0yMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ11b
RVNOZXh0XSBDcmVhdGUgYSBuZXcgb3Bjb2RlIHRvIGhhbmRsZSBwcml2YXRlIGZpZWxkcyBzdG9y
ZS9kZWZpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkanVzdGluZyB0ZXN0cyB0aGF0IGVtaXQgYGdldF9wcml2YXRlX25hbWVgIHRvIGF2b2lkIGV4
ZWN1dGlvbiBpbgorICAgICAgICBGVEwvREZHLgorCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQt
cHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1j
b25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLW9zci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9s
eW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRp
Zmllci5qczogQWRkZWQuCisKIDIwMjAtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBCaWdJbnQgY2FuIGJlIGBmYWxzZWAgaW4gYm9vbGVh
biBjb250ZXh0IGluIERGRyBBSQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1w
cml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBp
bGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsg
IiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
dGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2Vw
dGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQg
PSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwg
InAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRo
aXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlz
WyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0
aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAg
fQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNl
dEZpZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRG
aWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1nZW5lcmljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJkNmMyOTljNjYyNzBiYWJjYTNkMDA3YjdhNzgzMDk3NzI3OTRkNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMu
anMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKGR5bmFt
aWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSB0aGlzLmluaXQo
KTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNbZHluYW1pY1Byb3Bl
cnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdl
dEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citu
b0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJvcGVydHknICsgaSk7
CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0ZXN0Jyk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MzQ3Y2VhNjAwMDVhOWI1Zjg2OGEwYjUzYmYyMWQ3NWMyNGZiYjA4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCkBAIC0w
LDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9
dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiAr
IGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rv
cikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAi
IGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0
aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0
aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVuY3Rpb24g
Zm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAjZm9v
OworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAgdGhpcy4j
Zm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lubGluZShm
b28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAw
KSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9IGVsc2UgeworICAgIGZv
bygpOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMzMTRmYTllNzA0OWYxYjgwYjAyZmMwYTcxOTU0N2U3YTIx
ZGI5MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
aW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDY5
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93
czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
I2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAg
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFj
dG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOworCits
ZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKK2MyLnNldEZpZWxkKCdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwg
J2ZvbycpOworCitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgYy5zZXRGaWVsZC5jYWxsKGMyLCAndGVzdCcpOworfSk7CisKK2Fzc2VydC50
aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYzIuc2V0RmllbGQuY2FsbChjLCAndGVzdCcp
OworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3Ny
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTE2OTVhMWFkZTM3NjljNjE0ZGRjOTMwMTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCkBAIC0wLDAgKzEsNDAg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAg
IH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQo
KTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisgICAgICAgICAgICB0
aGlzLnByb3BlcnR5ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRG
aWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5l
KEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
K25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQo
J2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBp
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5
bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2NmYzUzNjRjYTllMDJjZTk1MjNiYWM0MTVjMTgwMTQ2ZTE1Njg5ZAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNz
IEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAg
aWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgICAgICBy
ZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4j
ZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9J
bmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQp
Oworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1zZXQtYmVmb3JlLWRlZmlu
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtc2V0LWJlZm9yZS1kZWZpbmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzcwNmE3MWZhOTA3YWQxNWMxNDNmMWI3ZTdmODgzOTRkMGE3NzM1Zgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtc2V0LWJl
Zm9yZS1kZWZpbmUuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSAr
ICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNl
cHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRTdG9yZSA9IGZhbHNlOworCitmdW5jdGlv
biBmb28oKSB7CisgIGNsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgICNm
b287CisKKyAgICBpbml0KCkgeworICAgICAgaWYgKHNob3VsZFN0b3JlKQorICAgICAgICB0aGlz
LiNmb28gPSAxMjsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3IEMoKTsKK30KK25vSW5saW5l
KGZvbyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEw
MDApIHsKKyAgICBzaG91bGRTdG9yZSA9IHRydWU7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsICgpID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9IGVsc2UgeworICAgIGZvbygp
OworICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YTMyOTdiZWQ4MmQ3YzBjN2U1
MmQ1NWE3NWU1YWMyMTE4MWI3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsMzIgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFs
dWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1k
aWZmZXJlbnQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDM3ZDgxN2VkZTE0YTIw
MzVmMzVhNjg4YmE0MTVkYTE1ZmQzNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCkBAIC0wLDAg
KzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbigpIHsKKyAgICBjbGFzcyBD
IHsKKyAgICAgICAgI2ZpZWxkOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAg
ICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRM
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xh
c3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBj
bGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEgOiBuZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVz
dCcgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7
Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405391</attachid>
            <date>2020-07-28 12:19:50 -0700</date>
            <delta_ts>2020-07-29 08:20:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200728161945.patch</filename>
            <type>text/plain</type>
            <size>124219</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODI5ZjM5NWY3YjViZmJjNDRkMDU5ZWYzZjQ1ZmU5ZjQyOWFmNmU1Li5lMzJkYzA0NGU1OWQ0NTli
OTk0ZmM0ZjlkODc0YWZlYjhkNmI5YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTkgQEAKKzIwMjAtMDctMjMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMsIGluY2x1ZGluZyBMTEludC4KKyAgICAgICAgSXQgaXMgYWxzbyBhZGRpbmcgYSBuZXcg
REZHIG5vZGUgYFB1dFByaXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBj
YXNlIG9mIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQor
ICAgICAgICBgcHV0X3ByaXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBh
cmUgdXNpbmcgd2l0aAorICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRy
eSB0byBjb21waWxlIGl0IGFzIGBQdXRCeUlkRGlyZWN0YAorICAgICAgICB1c2luZyBwcm9maWxl
ZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0Cisg
ICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lYCBub2Rl
LiBUaGlzIG5vZGUgZG9lc24ndAorICAgICAgICBoYXZlIGFueSBvcHRpbWl6YXRpb24gaW1wbGVt
ZW50ZWQgeWV0LCBhbmQgaXQgYWx3YXlzIGRvIGEgc2xvdyBwYXRoCisgICAgICAgIGNhbGwuIFRo
ZSBjYXNlIHRoYXQgZGlzYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBwdXRfcHJpdmF0ZV9uYW1l
YCBhcworICAgICAgICBgUHV0QnlJZERpcmVjdGAgaXMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGV2
YWx1YXRpb25zIG9mIHRoZSBzYW1lCisgICAgICAgIGNsYXNzLCBidXQgc3VjaCBwYXR0ZXJuIG1p
Z2h0IG5vdCBiZSBjb21tb24uIElmIHRoaXMgaHlwb3RoZXNpcyBzaG93cworICAgICAgICB0byBi
ZSBmYWxzZSwgdGhlcmUgaXMgc3BhY2UgdG8gb3B0aW1pemUgYFB1dFByaXZhdGVOYW1lYCBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4
SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJv
cGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5l
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2
YXRlRmllbGRQdXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6UHV0QnlJZERpcmVjdERhdGE6OlB1dEJ5SWREaXJlY3REYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpQdXRCeUlkRGlyZWN0RGF0YTo6YXNXb3JkKToKKyAgICAgICAgKEpTQzo6REZHOjpQdXRC
eUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICog
Z2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21w
aWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVO
YW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNO
b25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIw
MjAtMDctMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBCaWdJbnQgY2FuIGJlIGBmYWxzZWAgaW4gYm9vbGVhbiBjb250ZXh0IGluIERGRyBBSQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2Ew
ZThkYjJiNDhkNzI2Mzc3OGRjMTUuLjlmZDQ5NWMzZGQwNjk5MDdhNWFlNzU4ZjBhMWQyZjhlM2Ex
ZjM3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0Myw3ICs1NDMs
NiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5
dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAg
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAg
ICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgK
ICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtOTY5LDYgKzk2OCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9PcHRpb25z
LmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1lL1BhcnNlSW50LmgKKyAg
ICBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaAogICAgIHJ1bnRpbWUvUHJpdmF0ZU5hbWUu
aAogICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmExYTg3OTQ3ODM1
ZDJhOWUwMTVjOGFjNTQxYmJmYmY5MzU1N2UxOS4uMGMwMjk0NWQwMmZlZjhkNzllZWRmNWY3NTEy
M2U5OTBiM2Q4YjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTYsNyAr
MTI1Niw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2
QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlG
NiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZB
Mzc1OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2NSw2ICsxMjY0LDcgQEAKIAkJODZBREQx
NDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyog
QVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZE
REVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBN
YWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2
Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIx
M0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTM2LDggKzQxMzYsNiBAQAogCQk4NjcwNEI4MTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0
ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJu
LmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFy
clBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFn
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFG
RjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4
RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQxNTcsNiArNDE1NSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2
RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1
IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0
S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2
YXRlRmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0
MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTg2LDYgKzc1ODYsOCBAQAogCQkJCTM3
QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovLAogCQkJCUNFMjBCRDAyMjM3
RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwICov
LAogCQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5n
RnV6emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdDOTUgLyogUHJpdmF0
ZUZpZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFBy
aXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyog
UHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9n
cmFtRXhlY3V0YWJsZS5oICovLApAQCAtODQ1Nyw4ICs4NDU5LDYgQEAKIAkJCQkwRjkzMzI5QTE0
Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJD
NEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0JCQkJODY3NkM2RTcyMzQ2NDVCMzAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZB
QUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUw
IC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29y
ZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMTc4LDYgKzEwMTc4LDcgQEAKIAkJCQlDRTIwQkQwNzIz
N0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAwOUUgLyogUHJldmVudENvbGxl
Y3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5
IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5
NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1
NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTBB
QUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwMjE4LDcgKzEwMjE5LDYgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyog
UHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYz
QzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU5MGRiNDI4
NzU0MWFjNGUzMTdlYmRiZGZkMjc2ZGE1NzM0MmNlN2UuLmYyZDNkMjUwZjQ1ZTEzODIyMjNmZjkx
YzkwZWY0NTkyMzg0YTVlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw3
ICsyNjgsNiBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAotYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCkBAIC05MzYsNiArOTM1LDcgQEAgcnVudGltZS9PYmplY3RUb1N0
cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKIHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1
enplckFnZW50LmNwcAorcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDU4Nzg0NWZkNTBlMzJlYmZiZWU2ZGJkOGQ2ZWYx
MDU5NGFiM2QxYzUuLjk2ZTNlZGNhYWM0MTcwMGI4NmFiZGNkZWU0Zjg1MjMyODMwMmRkYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
NDYsMTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJl
c3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwK
ICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAg
IDpQdXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAog
ICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTczLDYgKzU3MywyMCBAQCBv
cCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0Nl
bGxdLAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAg
ICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFBy
aXZhdGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJb
SlNDZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewog
ICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01OTgsNyArNjEyLDcgQEAgb3AgOnB1
dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDVmNTg2NThhMmU2YjFlNDQ2ZDgzYTIxMDAwMjg1M2ViMjM4Y2M0
MWIuLjY5MjhmN2Y4ODY5YzRlZjNiYTU1OGFlZTU1Mzc2YTEzNjE3NTkyZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI2
LDYgKzIyNiw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0
b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwg
YmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0
eSkKKyAgICBVU0VTKE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAg
ICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hh
c0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5z
dGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTM5NCw2ICszOTUsNyBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydQogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBv
cF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBv
cF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAg
IGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDc5YzUwNWY0ZDJmNTMxZmVlZDcxM2NhNDM2NDVmYjc5YWMxOGNiZDkuLjUwMjg5
YTcyNTkzYjFhOGNmYTRhZDg3YzM4NTUxMmJlYjliYTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01MDksNiArNTA5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50
cywgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcENvbnN0cnVjdFZhcmFyZ3MsIHByb2ZpbGUpCiAg
ICAgICAgIExJTksoT3BHZXRCeVZhbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEdldFByaXZh
dGVOYW1lLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BHZXREaXJlY3RQbmFtZSwgcHJvZmls
ZSkKICAgICAgICAgTElOSyhPcEdldEJ5SWRXaXRoVGhpcywgcHJvZmlsZSkKQEAgLTU0MCw2ICs1
NDEsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkK
ICAgICAgICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3Qp
CisgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJy
YXkpCiAgICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNCw2ICsxMTM2LDI1
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAu
aXNNYXJrZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAg
aWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0
YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG5ld1N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChv
bGRTdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTMwMCw2ICsxMzIxLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5l
Q2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsK
ICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVO
YW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAg
ICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAg
ICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiQ2xlYXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX29mZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0g
MDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7
CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIy
YTM4MmJmNmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAi
T3Bjb2RlU2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRl
ICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgot
I2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5j
bHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0
ZXIuaCIKQEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXpl
PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8
UHV0QnlWYWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBU
eXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlz
IDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAg
ICBpc1N0cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAg
PCBpc0RpcmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
aXNTdHJpY3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZh
bEZsYWdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFRhcmdldFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwot
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1v
ZGUoKS5pc1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAg
ICAgICAgcmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAg
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAg
ICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJp
dCk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lz
U3RyaWN0Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmll
bGRBY2Nlc3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19w
cml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNT
dHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAg
IHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAg
ICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2
YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZp
ZWxkKGVjbWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVT
aXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihF
KSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBw
dWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcg
QmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCAr
Mzg3LDI0IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4
X3QsIHNpemU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3Qs
IHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0
YXRpYyBib29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0
YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52
YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0
KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsK
KyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDhlOTBmZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKLQotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQotewot
ICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOwotICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQot
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3QiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2
YXRlRmllbGRQdXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1
dCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YWRmMmQxYjM2YzYxY2UzMDJiZjljMjM4MjU2YTcw
NTY4NzY2N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFQ01BTW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNs
YXNzIFB1dEJ5VmFsRmxhZ3MgewotcHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlW
YWxGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0
IHB1dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNr
aW5nIGlmIHRoZQotICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsK
LSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5l
UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZh
dGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQot
ICAgIGJvb2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNN
QU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kOjpQdXQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0
ZTsgfQotCi1wcml2YXRlOgotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0Rp
cmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSkKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2Vz
cywgRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFN
b2RlIG1fZWNtYU1vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNjgwNmYzOTU1NmNhZDE1ZThmNzNkY2Q1YTRkZDU3ODQ3ZjZhZGMzZi4uYmI2
Zjg0MjQxMjRiMTU2MzMzMjA5ZTI5ZTBhNGE0NzMxY2JmZGRkYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMu
aCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZh
bENvZGVCbG9jay5oIgpAQCAtMjcxMiw3ICsyNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRC
eVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkp
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjczNiwxMyArMjczNywxMyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVG
aWVsZChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJp
dmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGY0YTgyNzg5MmVlNzg5YTZiMTRiYzBlNGQ1
YzA2OGFlMzUyNWQ5ZTMuLmQ4Y2ZmYzUwOWJiZjE5MjBkYWNlYTAwMGQwNGQxNzE1MzNjOGM2OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQwNzQsNiArNDA3NCw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlz
OgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYWM0Nzc1ODRiNDg3MDVlNzMxMTQ3ZjhkY2Yw
ZGY3NzQxODRhZGIzMS4uMGQ2OWIzNGViOTkzNGNmNDQ3NjZkNDMzODU2ZWYyMDdlN2VjNGNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTcwLDkgKzcwLDkgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNp
bmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5o
IgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0yNDcsMTAgKzI0NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4KTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAotICAg
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CisgICAgICAgIE5vZGUq
IGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0
YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKICAg
ICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRC
eUlkU3RhdHVzJiwKLSAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0
SW5kZXgsIEVDTUFNb2RlKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kID0gUHJpdmF0ZUZpZWxk
UHV0S2luZDo6bm9uZSgpKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNNQU1vZGUp
OwpAQCAtMTI2NywxOCArMTI2Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNl
T1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Ci1F
Q01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNv
ZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQotewot
ICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0KIEJhc2ljQmxvY2sq
IEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgxMiwyMiAr
NDgwMCwyMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogfQogCiB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVz
JiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewot
ICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKLSAgICBlbHNl
CisgICAgaWYgKGlzRGlyZWN0KSB7CisgICAgICAgIFB1dEJ5SWREaXJlY3REYXRhIGluZm8oZWNt
YU1vZGUsIHByaXZhdGVGaWVsZFB1dEtpbmQpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRE
aXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGluZm8uYXNXb3JkKCkpLCBiYXNlLCB2
YWx1ZSk7CisgICAgfSBlbHNlCiAgICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtl
c0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9w
SW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLAotICAgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2RlSW5k
ZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBjb25zdCBQdXRCeUlkU3Rh
dHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJ
bmRleCwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxk
UHV0S2luZCkKIHsKICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJ
ZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7
CiAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9H
cmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC00ODM1LDcgKzQ4MjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0
YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFu
dHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7
Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUs
IHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNDg0NCw3ICs0ODMzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhd
LmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGVjayhwdXRCeUlkU3RhdHVzW3Zh
cmlhbnRJbmRleF0uY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
ZWNtYU1vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmll
bGRQdXRLaW5kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTQ4ODcsNyArNDg3Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwg
T3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwg
YmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAg
ICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSwgcHJp
dmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
NDk1MCwxMSArNDkzOSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAg
ICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgYWRkVG9H
cmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0
YXR1cykpLCBiYXNlKTsKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0Nl
bGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICgh
bG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00OTk4LDcgKzQ5ODgsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBkZWZhdWx0OiB7Ci0gICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBp
c0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQ
dXRLaW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNjA0Nyw2ICs2MDM3LDUx
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAg
ICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCBj
b21waWxlc0FzUHV0QnlJZCA9IGZhbHNlOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgUHV0QnlJ
ZFN0YXR1cyBwdXRCeUlkU3RhdHVzOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5tX2xvY2spOworICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdp
bigpLmJ5dGVjb2RlSW5kZXgoKSkpLmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQs
IGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCisgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1l
LCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZv
IAorICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAg
ICAgICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQor
ICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29tcGlsZXNBc1B1dEJ5SWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVy
LnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAgICAg
ICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIu
Y2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFu
dCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBwdXRC
eUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50Q29k
ZU9yaWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNvbXBpbGVzQXNQdXRCeUlkKSB7CisgICAgICAgICAgICAgICAgY29uc3Rl
eHByIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBuZXh0T3Bjb2RlSW5kZXgoKSwgRUNNQU1vZGU6OnN0cmljdCgpLCBieXRlY29k
ZS5tX3B1dEtpbmQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRQcml2YXRlTmFtZSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcml2YXRl
X25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0
eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BEZWZpbmVEYXRhUHJvcGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5
dGVjb2RlLm1fYmFzZSk7CkBAIC04MjYwLDcgKzgyOTUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0
SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAg
ICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0
ZWNvZGUpKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5k
ZXgsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1
dEJ5SWQpIHsKQEAgLTgyNzEsNyArODMwNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVs
bHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFk
ZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlW
YWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1vZGUoYnl0ZWNvZGUp
KSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFs
RGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0
ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZh
bCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBl
eGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5k
ZXggMWM2YzY2ZjgwMjM1Y2Y5NjllYmIyMzE2MTkzY2Q4MzQ3MGQ4YzQzNS4uYWQ5ZjI0YzUwODY2
OGYwNDRkNDU1MzJiZTM2NWQzMTU3NTk4ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIENhcGFiaWxpdHlM
ZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ug
b3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAg
IGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJ
bmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNh
dXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50
IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODUy
MDBkNWRhZjFkZWU4ZTkwZmU4MTQxZGJiMWNjYmQ5YjUzMzdlZS4uNzAwMTZjY2U4MDdkYWU2MDg5
MmZkNzhmZWU4ZjFjMjM1YThiOTllNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKQEAgLTY2Niw2ICs2NjYsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgog
ICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBj
YXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6
CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IDczYzc4ZTM3NWI5ODllZWRlMWZiY2JmZDEzZmQ0NmQ3ZWQwZjJlMjAuLjkwNDg1
ZjBiYmI0NzVjNGM5YmUxMzU1Nzk4YjU2MDY2ZWIyOTA5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMyMSw2ICszMjEsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAg
IGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIFB1dFRvQXJndW1l
bnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCmluZGV4IDkwZTliMTM0ZWVhMDIxODk3NDNjZjE0MWE3ZDlhNmYyZTcx
NmIwNDMuLjdiNmExMTlkZmQ5ZjAzMTAxZTU1NTdmODJkNDBmN2ExNWYxZTllN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjc0Nyw2ICsyNzQ3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgQm90dG9t
VmFsdWU6CiAgICAgICAgIGNhc2UgVHlwZU9mOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbFdp
dGhUaGlzOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCmluZGV4IGRkMGQxMmRhZjhkOWExOWM0MThhMGRjM2Q0OTFjY2I3MDA0NGFl
ZjcuLmE1ODdjNzFmZGZkNjJjYjc2NjE1ODNhZjU2ZGFkOTcyNzNmMWIyMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR2V0QnlJ
ZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZh
cmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2Nh
dGlvbi5oIgpAQCAtMTM2LDYgKzEzNywyOSBAQCBzdHJ1Y3QgRGF0YVZpZXdEYXRhIHsKIH07CiBz
dGF0aWNfYXNzZXJ0KHNpemVvZihEYXRhVmlld0RhdGEpID09IHNpemVvZih1aW50NjRfdCksICIi
KTsKIAorc3RydWN0IFB1dEJ5SWREaXJlY3REYXRhIHsKKyAgICBQdXRCeUlkRGlyZWN0RGF0YShF
Q01BTW9kZSBtb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpCisgICAgICAgIDogZWNt
YU1vZGUobW9kZSkKKyAgICAgICAgLCBwcml2YXRlRmllbGRQdXRLaW5kKHB1dEtpbmQpCisgICAg
eworICAgIH0KKworICAgIHVpbnQxNl90IGFzV29yZCgpCisgICAgeworICAgICAgICByZXR1cm4g
KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwcml2YXRlRmllbGRQdXRLaW5kLnZhbHVlKCkpIDw8IDgp
IHwgZWNtYU1vZGUudmFsdWUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHV0QnlJZERpcmVjdERh
dGEgZnJvbVdvcmQodWludDE2X3Qgd29yZCkKKyAgICB7CisgICAgICAgIEVDTUFNb2RlIGVjbWFN
b2RlID0gRUNNQU1vZGU6OmZyb21CeXRlKHdvcmQgJiAweGZmKTsKKyAgICAgICAgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kID0gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUoKHdvcmQg
JiAweGZmMDApID4+IDgpOworICAgICAgICByZXR1cm4gUHV0QnlJZERpcmVjdERhdGEoZWNtYU1v
ZGUsIHB1dEtpbmQpOworICAgIH0KKworICAgIEVDTUFNb2RlIGVjbWFNb2RlOworICAgIFByaXZh
dGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZDsKK307CisKIHN0cnVjdCBCcmFuY2hU
YXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAgIDogYmxvY2sobnVsbHB0cikKQEAg
LTIyNzEsNyArMjI5NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6
ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJ
ZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbDoKQEAgLTIyNzksMTIgKzIzMDIsMzkgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6
CiAgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50
OF90PigpKTsKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWREaXJlY3REYXRhOjpmcm9tV29yZChtX29wSW5mbzIuYXM8dWludDE2X3Q+KCkpLmVj
bWFNb2RlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
OgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAg
ICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhf
dD4oKSk7CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgICAgIHJldHVybiBQ
dXRCeUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQobV9vcEluZm8yLmFzPHVpbnQxNl90PigpKS5wcml2
YXRlRmllbGRQdXRLaW5kOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kOjpkZWZpbmUoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgaGFzQXJpdGhNb2Rl
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyYzQ4YWVlNWYwZGE5MjhiYTk0MDU4ZTE0MWMzZTVlZDdj
ZTQ1NmYuLmY3Yjc2NDc4NzNjNjg1NjU0ZWQ5ODUyNmNmYTcxM2JiZmQ2NjcxZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIwOSw2ICsyMDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxEaXJlY3QsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFs
aWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhQdXRQ
cml2YXRlTmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDBl
NGMzMWJmMGQ3ZTU4NThiYmRiNzQ0MjMwYTYzNjdjNGZhMGI2MzkuLjQzMzUyNjU5YjJhZTBhYzM1
OTdkOWQ1ZGE4ODkwZWU5OGE4NDQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcElu
Zm8uaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiSGVhcENlbGwu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVj
dCBPcEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3Au
YXNCaXRzKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdC
aXRzKCkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92
YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IGQxMDc2ZDRlOTE0ZTcwNTg4NzViNDUyNmU0YzQzZDhkYzMy
Y2NmMmEuLjE5MTJmYzU4YjM1OGFmNzA3ZDIwNzhlZDViZmIwMzhlZTYyNTRmYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0xMzczLDYgKzEzNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAg
ICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMDQwZDNmM2NjOGQ0YjQxOTc3MmM5YTFhZDY4YjZlNGJk
OTIzNzkxZi4uZGUxNjdlNTMyYjVmOWNhZmQ1YzNiOGEzMjU5ZDljM2ZjODZiYjMzZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNSw2ICs1
MjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVy
QnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToK
ICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NmVjOWUwNDc2ZGUxYjFmNTJjYmVjZjhlNTM5MGQwNDYwOGQzMmVjOS4uNzExZjBhN2Q0NjZkMTE0
ZDRhZjExMjE4NjMxMTRkNWNlNWRkNTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM1MjEsNiArMzUyMSwyMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQoreworICAgIEpTVmFsdWVPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3Bl
cnR5VmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihub2Rl
LT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZh
dGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbTMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1
ZSgpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIG5vUmVzdWx0KG5vZGUp
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5v
ZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CkBAIC0xMjcyMiw3ICsxMjczOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNj
cmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQcml2
YXRlRmllbGRQdXRLaW5kOjpub25lKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGls
bCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyNzM3LDcgKzEyNzUzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUo
KSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQpAQCAtMTI3NTIsNyArMTI3NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZERpcmVjdChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVl
LmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwog
Ci0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3QsIG5v
ZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgRGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5k
KCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDM4Miw3ICsxNDM5OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0
S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChz
cGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xNDM5NCw3ICsxNDQxMCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRl
bnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1
ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtp
bmQsIHByaXZhdGVGaWVsZFB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9q
aXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggNjYyNWQ2Mzk2YTVlZWRlYWZlZDU2YzY0MGZhODc5ZmM0ZTExY2NhNy4uN2ZkYjg4YWY5
ZTAxYWUxMzYyMmZmOGQwYTgxNzIzMzgyMWM5NGVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVDaGVja05ldXRlcmVkKE5vZGUqKTsKIAogICAgIHZvaWQgY2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBT
cGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxS
ZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIFByaXZhdGVG
aWVsZFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGls
ZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQg
Y2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEzNjAsNiArMTM2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqLCBFZGdl
JiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBpbGVQ
dXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxk
MiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zmc2V0KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBh
MWYzMWFiNDQ5MWUxYzE0NzY4ZTcwYjliNjVhZGYyZDBjM2I3ZmUyLi43NDExNDBmMjkxM2MxMjZk
MWRkZTQ1NDdhODVlOTFmOWVhNDJlNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI1OTYsNiArMjU5NiwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29tcGlsZVB1
dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCAwNmEwODFjYWRjZTJhZjQ4YWE1ZWYwMzViOWMyMTg0YjE3ZGE2NjMyLi41MjE1
M2YyMTU4NjA1NTNhNTUyNGU0OGRlMGYwMTFhZjA0Mzc0YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5MTksNiArMjkx
OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29t
cGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggOTZhN2YxNjQxNDYwYTUyZTgyNmU1YzkzN2NmY2Q4NTRkMzliZDQyZS4uOTViNWEz
ZDVlY2JiOThkM2I0OGFmNGQyYTRiOTcwNzMxMTRlM2EwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzkzLDYgKzM5Myw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlW
YWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRo
VGhpczoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3Rh
dHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IDY3MTIyMGZjZWY5MThjOTg0ZjhhYmZjNzYwODYwM2ZkMmEwYTk2MjIuLjkxNzRlNjc2YWQ0
MzRmOWFkZDEzN2EzYmM4NTg2YWFiOWMyNDE0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMTgsNiArMTAxOCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQdXRC
eVZhbFdpdGhUaGlzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKKyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXRvbWljc0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNz
QW5kOgogICAgICAgICBjYXNlIEF0b21pY3NDb21wYXJlRXhjaGFuZ2U6CkBAIC0zOTQzLDYgKzM5
NDYsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkp
OworCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5p
c0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9u
U2V0UHJpdmF0ZU5hbWVHZW5lcmljLAorICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBtX291dC5jb25zdEludFB0cigwKSwgbV9vdXQu
Y29uc3RJbnQzMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOworICAgIH0KKwogICAgIHZv
aWQgY29tcGlsZUF0b21pY3NSZWFkTW9kaWZ5V3JpdGUoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKQEAgLTQyMTMsNiArNDIyNyw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gbm9kZS0+ZWNtYU1vZGUoKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRl
RmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gbm9kZS0+cHJpdmF0
ZUZpZWxkUHV0S2luZCgpIDogUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwogICAgICAgICAK
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
QEAgLTQyMzEsNyArNDI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3Rl
ciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKaW5kZXggZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYx
NS4uNzMxNzEwMDk2Y2YzZTI0OThhZTQ1ZGRhMjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUgRFNM
CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRh
dGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5o
IgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMjFhZDc2
Y2YyMDQ1NGUyZjk4N2IwZjAwMjNmNTllYzAwYWZjOGFhYy4uMjk2YzcxYjIyMDJiMmI0ZWYwYWZk
YTFiZDQ1MDA5NTJjOTRmOWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI1
LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVy
X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg1LDYgKzU4Niw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxf
YnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05MDAsNyArOTAy
LDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5v
dEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAg
ICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAg
ICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5k
ZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBh
dGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5i
YWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVC
YWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVM
b2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAg
ICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGls
YXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJn
ZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRo
VGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggNDc4Y2MwN2VjNmY1NTJkMjQ2MjU0Y2VjMzEwMDNlYjY2NTg2Yjhk
Mi4uNzg3NDdmNTc3NmY0MThkZDhjZjRlMDMxYWZjNDE4N2Q5MTRlNzNmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0xNjEsNiArMTYxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgIH0KIAorICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8q
IGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6
UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFy
Z2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAg
ICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAg
ICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90
UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisKICAg
ICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhK
dW1wOwpAQCAtNDA2LDcgKzQxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERl
dGVybWluZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUu
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQ
dXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIg
Y2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1p
dEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNo
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwMyw2ICs2
MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBP
cFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02ODMsNiArNjkzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcAppbmRleCAyMzY4MzA0NWYxZmQxZjZhYTQ1ZTYxZDYzODlhZWYxZmMyODIwMWU2
Li43ZjdlNDQ5NWI2MTMzNzljNWExNDJmNTM0YTI4NTMxMTNiNWIwMmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApA
QCAtMTM2LDExICsxMzYsMTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21h
TW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJpdmF0
ZUZpZWxkUHV0S2luZChwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVz
ZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lk
IEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0
aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0S2lu
ZC5pc05vbmUoKSkgewogICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAgICAg
ICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAg
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKaW5kZXggNzMyOWQ2YjczODE0ZDZjNGJhNTUyYTU4OTNlNzJiMDIxZTZh
NTEyMC4uMmRmZjVmZDQ3YTc4OGE2NDVjZjljMjQ3Yzk3YjU4Mjc1MDU4Y2NlMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApA
QCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFs
RmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIK
IApAQCAtMTMxLDEyICsxMzAsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkK
ICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAg
ICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQoUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKQog
ICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFs
dWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQp
OwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAg
IApAQCAtMTQ1LDcgKzE0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9l
Y21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIG1f
cHJpdmF0ZUZpZWxkUHV0S2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDog
cHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKaW5kZXggZDUzZTY5NzdkMzlkNzU5ZTY3NDEyZmQ5YWQxYjllNjc4MmI5N2Qz
MS4uOTE1MjY2MGJmNGUyZGRlZWU3M2QwNTU1YTRhOGRhNDBkOWQzNmEyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19J
TkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0K
IAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0
QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2Rl
IEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAg
ICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3Ry
aWN0KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJ
VDo6cHJpdmF0ZUZpZWxkUHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZTsKKyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwog
fQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklU
Ojpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJl
Y3Qgb3ApCitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmll
bGRQdXRLaW5kPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAg
cmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBv
cC5tX3B1dEtpbmQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZWYwZTgzZjQ5ZDI5NjBlMmZmNzQzNGY4
YWUwYThmMjBiMzU3NzRjYy4uZDc5OWMwNDg0MzQ2YzM3ZWI0NTBmYjcyZTJjNjYxM2NkZDdjM2Zm
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
MTA1LDcgKzExMDUsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFsKGds
b2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFN
b2RlKTsKIH0KIAotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2Rl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTExMTksNiArMTExOCwx
MzIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9i
amVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBl
Y21hTW9kZSk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFt
ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIE9wdGltaXphdGlvblJlc3Vs
dCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjpp
c0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1YnNj
cmlwdC5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29k
ZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2Vlbikgewor
ICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5
TmFtZSkgeworICAgICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeVZhbFdpdGhDYWNo
ZWRJZDxPcFB1dFByaXZhdGVOYW1lPih2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgRGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElk
KTsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9u
UmVzdWx0OjpPcHRpbWl6ZWQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gU2VlbSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAg
ICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0
OjpHaXZlVXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNl
ZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0
OjpTZWVuT25jZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRp
bWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1p
emF0aW9uUmVzdWx0OjpTZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0
aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQor
ICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBp
dGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNl
cnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAg
ICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZl
VXAuCisgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAg
ICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwor
ICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0
OjpHaXZlVXApIHsKKyAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAg
ICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxs
QnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgcHV0
S2luZC5pc0RlZmluZSgpID8gIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9w
ZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgIAorICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdp
dGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFs
d2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsK
KyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQu
aXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBi
YXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVO
YW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vi
c2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJp
dmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisg
ICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVj
dCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8p
CisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFs
dWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJz
Y3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisg
ICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUg
YWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0
aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1v
ZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Cisg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBi
YXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IDRjMjIwNTMwYWI0ZGU1YjI2ZDdkOWFkM2QzYjgyZTNiNGRiOTdkOWEuLmIxNjQ4NDE2NzIz
YzM4Njc1NzQ3NTFlMTRkMTYzYjkxMWQzNDRiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0
S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0x
OTMsMTAgKzE5NCwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmlu
ZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZQogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJO
QUw7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZh
bEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZv
KiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RG
X0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDdlMDk0NDIwOTIyNTZjOGVhZjU3
OGRhN2I0ZTE5NTI0YzAxZWQ5Y2IuLmZmZjhhNjI3Mzk0NTI3OTdkYjU0ZjlhNmVhMjhlNGZiYjE5
MDlmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1i
ZGEuaD4KQEAgLTI3NSw3ICsyNzYsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1
dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShi
eXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21h
TW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5l
dyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAg
IC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZl
Y3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAtMzA1LDcgKzMwNiw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAg
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29k
ZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwor
ICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlm
IChpc0RpcmVjdCkKQEAgLTMyOCw2ICszMjksNDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRl
TmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5
VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbygpOworCisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEpt
cCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAg
CisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9u
SW5mby5hcHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5k
ZXgsIGZhc3RQYXRoSm1wLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBC
eVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQg
PSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAg
IExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7
CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BSID0g
cmVnVDI7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFz
ZUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBw
cm9wZXJ0eUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVl
LCB2YWx1ZUdQUik7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVk
SW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21f
YnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJl
c3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dEdldHRlckJ5SWQ+KCk7CkBAIC02NTksNyArNzAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAotICAg
ICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQo
Ynl0ZWNvZGUpKTsKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRl
RmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzE3LDcg
KzEzNTksNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRl
RmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMTQyOCw3ICsxNDcwLDcgQEAg
dGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbERpcmVj
dD4oY29uc3QgQ29uY3VycmVudEpTTG8KIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8s
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFi
bGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGly
ZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtpbmQg
PT0gTm90RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAgQVNT
RVJUKChwdXRLaW5kID09IERpcmVjdCAmJiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxf
ZGlyZWN0IHx8IE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKSkgfHwgKHB1dEtp
bmQgPT0gTm90RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDUwLDE4ICsx
NDkyLDMxIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6
ZShwYXRjaEJ1ZmZlciwgcGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10o
KSBjb25zdGV4cHIgeworICAgICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxf
ZGlyZWN0KQorICAgICAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsX2RpcmVjdCI7CisgICAgICAg
IGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiAicHV0X3ByaXZhdGVfbmFtZSI7CisgICAgICAgIHJldHVybiAicHV0X2J5X3ZhbCI7Cisg
ICAgfTsKKwogICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9T
VFVCKAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRy
VGFnLAotICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5
IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gRGly
ZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCks
IHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsK
KyAgICAgICAgIkJhc2VsaW5lICVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgb3Bjb2RlTmFtZSgpLCBwcm9wZXJ0eU5hbWUudWlk
KCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy52YWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZv
KCk7CiAKKyAgICBhdXRvIGdlbmVyaWNGdW5jdGlvbiA9IHB1dEtpbmQgPT0gRGlyZWN0ID8gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOwor
ICAgIGlmIGNvbnN0ZXhwciAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUpCisg
ICAgICAgIGdlbmVyaWNGdW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8g
b3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5h
bWVHZW5lcmljOworCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihwdXRLaW5kID09IERpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
Q2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9Q
dHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihnZW5l
cmljRnVuY3Rpb24pKTsKIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9t
IGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAotLy8gc28gd2Ug
bGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KKy8v
IHNvIHdlIGxpc3Qgb2ZmIHRoZSB0aHJlZSBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2
YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hl
ZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7Cit0ZW1wbGF0ZSB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPihC
eVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
KTsKIAogSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMwNDdkMmIxMzllNmEy
YjVhYWQ1MmYzNGVmNzU4ZGY5NDMwYWFlYjUuLjM0ZWYzNjFjZGRjY2U2ZTE0Njk3MjlkYTM5OWY2
YjdjZDg4MzYxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMjg3LDYgKzI4Nyw1MCBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8UwogICAgIH0KIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFs
SW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNl
LCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxl
SnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0
UGF0aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1f
Ynl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1l
PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKworICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0u
YnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1f
cHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1Bh
dGggPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsK
KyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKKworICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VS
ZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKHByb3Bl
cnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpOwor
ICAgIGVtaXRMb2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFnR1BSKCksIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGJ5VmFsSW5mbywgVHJ1c3RlZElt
bTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5
VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNz
ID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOworfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOwpAQCAtNjY0LDcgKzcwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAotICAgICAgICByZWdU
MSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICByZWdUMSwgYnl0ZWNv
ZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmlu
ZGV4IGM1MjNlOGE2MDA2ZGRjNTNkMjU5OWE0ZDI0YzZlOTRiNTRkY2FkYmQuLjhkNzljYTcxNWQy
NTk2YzlhYTRmZDM2YmUyNzViODFiZmE0ZDU5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OCw5ICs1OCw5
IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRl
ICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBjMTI2M2ZmYTAz
Y2YwNjBhY2M2MzczNDg2ODIyYzcxYTlmN2Y2OWVhLi5mOTA4MjgyOTY2ZTNmODYyNzg1ZTU2MmQy
MDEwNjBhZWYxZTE1MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI2IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0g
Ynl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0
TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlw
dC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwot
ICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
LSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0g
c3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0
QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9F
TkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3Qg
aWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlz
UHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElO
VF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxk
cyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8v
IGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBi
b29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmlj
dE1vZGUpOworICAgIGlmIChieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAg
YmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZh
bHVlLCBzbG90KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2lu
ZC5pc1NldCgpKTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAm
JiBiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisg
ICAgICAgICYmIHN1YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBT
dHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7Cisg
ICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOwor
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlT
bG90OjpOZXdQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQo
KTsKKworICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQ
cm90byhhLCBiKSkgeworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQ
b2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRl
dGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBi
LT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0s
IFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8v
IFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRh
dGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsK
KyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRh
Lm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwg
PSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
YmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0
dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5i
YXNlKCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6
Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYg
KCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0
cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVj
dHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVu
SW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVBy
b3RvID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVD
aGFpbiAmJiAhc2F3UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKG9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1
cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVC
bG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdl
dCB0byBkaXNhYmxlIGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRp
b24gdGhlbiBzdG9yZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1v
bmcKKyAgICAgICAgICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4g
SWYgd2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAv
LyB0byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVw
bGFjZSBJQyBkb2VzIG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRo
ZXNlIHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAg
ICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAg
ICAgICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwg
c2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+
aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2
bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRl
eCA2YzMwOGQ5ZjNkZGUyNWI5ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4
NzgxZTE4Y2JmZTgzM2YzYTljMWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmlu
ZGV4IGQ5NDExMmI4MWE5YzkwZjc4MzQxYTgwNWVlMzIwNDVhNWMwZTA2NDUuLmVlNzQwZDFiMWVm
ODZjYjQzODM0NTE0MmY3ZDM5NjJmYmExZTAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MDYs
NiArNjA2LDEzIEBAIG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVs
b2FkQWZ0ZXJTbG93UGF0aCkKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmll
ck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRl
clNsb3dQYXRoKQorICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25l
KQorICAgIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1Bh
dGgpCisud3JpdGVCYXJyaWVyRG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJh
bmQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIs
IC53cml0ZUJhcnJpZXJEb25lKQpAQCAtMTYzOCw2ICsxNjQ1LDQ4IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9w
X3B1dF9wcml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6
ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2
YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVT
bG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQ
dXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQz
LCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhh
dmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1
cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1l
OjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0
Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBd
CisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwg
bWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRh
ZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQo
bV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDEsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQ
dXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMg
dDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2
YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFBy
aXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJp
dmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFk
YXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2Mx
OTE0ODA2MzZkMjc3ZWJiZmFhMzU0My4uZmFmZjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRi
MzhhOGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpcwogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xv
dykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwoc2l6ZSwgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUs
IHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVy
ZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9w
UHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0
YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFt
ZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVj
dCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0
YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVj
dHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBz
dG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9w
ZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJl
bG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAg
IyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5v
dFRyYW5zaXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwg
d2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXQodDEsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwg
bV9iYXNlLCBtX3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93
OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisg
ICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29k
ZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVs
ZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxk
UHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZm
OWU2Y2I2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAo
QykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBt
ZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQor
ICAgICAgICBvdXQucHJpbnQoIlNldCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJE
ZWZpbmUiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0
Y2EzMDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCww
ICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0
cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBE
ZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQ
dXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2lu
ZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25l
KCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVm
aW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9
PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3Ry
ZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtp
bmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09
IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDZhYmE5Y2ViYzQyMjhiYWUwMzZmNGI0ZjQyN2UwZTc3OTEzMzM5
NzguLmFjZDQyNmMwODFiMGRmZmM1ZjJkOWYxYjZjMGE0ZGE5Y2VjNmVkMjIgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMjAtMDctMjMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBm
aWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0
byBhdm9pZCBleGVjdXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIHN0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBp
bGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1vc3IuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1zZXQtYmVmb3JlLWRlZmluZS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVy
ZW50LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA3LTIzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQmlnSW50IGNhbiBiZSBgZmFsc2Vg
IGluIGJvb2xlYW4gY29udGV4dCBpbiBERkcgQUkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMgYi9K
U1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQt
ZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJk
MTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUt
bmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xp
c3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0
aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
ZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRp
b24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0
aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7Cisg
ICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJy
ID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOwor
ICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAg
ICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAg
ICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQg
PSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDAp
IHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
Z2VuZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2MjcwYmFiY2EzZDAwN2I3YTc4MzA5Nzcy
Nzk0ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1nZW5lcmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxv
d1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAg
ICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
ZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJh
dGlvbihkeW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0g
dGhpcy5pbml0KCk7CisgICAgCisgICAgICAgIGluaXQoKSB7CisgICAgICAgICAgICB0aGlzW2R5
bmFtaWNQcm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKwor
ICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAg
ICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVy
biBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3Bl
cnR5JyArIGkpOworICAgIGxldCBjID0gbmV3IENsYXNzKCk7CisgICAgYy5zZXRGaWVsZCgndGVz
dCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjM0N2NlYTYwMDA1YTliNWY4NjhhMGI1M2JmMjFkNzVjMjRmYmIwOAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9y
ZS5qcwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRp
b24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBm
YWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlv
bi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRo
b3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZFN0b3JlID0gZmFsc2U7CisK
K2Z1bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7
CisgICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3RvcmUpCisgICAg
ICAgIHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcgQygpOworfQor
bm9JbmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlm
IChpID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3NlcnQuc2hvdWxk
VGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAgfSBlbHNl
IHsKKyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgt
Y29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlmMWI4MGIwMmZjMGE3
MTk1NDdlN2EyMWRiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAg
LTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkg
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikg
eworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJl
d0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9u
Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgewor
ICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIGdl
dEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9Cisg
ICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
ICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorCits
ZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxk
KCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xh
c3MoKTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxk
KCksICd0ZXN0Jyk7CitjMi5zZXRGaWVsZCgnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdl
dEZpZWxkKCksICdmb28nKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgKCkgPT4geworICAgIGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rlc3QnKTsKK30pOwor
Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLnNldEZpZWxkLmNhbGwo
YywgJ3Rlc3QnKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLW9zci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmExNjk1YTFhZGUzNzY5YzYxNGRkYzkzMDEzMmVhZjg4ZTIxZWMyZGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAt
MCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJz
PXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7
CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIg
KyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0g
dGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAg
ICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAg
fQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQor
CisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9
Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBj
LnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdjZmM1MzY0Y2E5ZTAyY2U5NTIzYmFjNDE1YzE4MDE0NmUxNTY4OWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGlj
LXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChh
LCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGkgPSAw
OworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7
CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsK
KyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAg
ICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yICg7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtc2V0LWJl
Zm9yZS1kZWZpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXNldC1iZWZv
cmUtZGVmaW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MDZhNzFmYTkwN2FkMTVjMTQzZjFiN2U3Zjg4Mzk0
ZDBhNzczNWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2Vw
dGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0
aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdp
dGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsK
KworZnVuY3Rpb24gZm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQo
KTsKKyAgICAjZm9vOworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkKKyAg
ICAgICAgdGhpcy4jZm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9
Citub0lubGluZShmb28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
aWYgKGkgPiAxMDAwKSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAgfSBlbHNlIHsK
KyAgICBmb28oKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2EzMjk3YmVk
ODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCww
ICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIHNl
dEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZp
ZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
bm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5z
ZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
Zm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4
MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5q
cwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oKSB7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikg
eworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0
RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25v
SW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigpOwor
bGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMuc2V0
RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0
ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405459</attachid>
            <date>2020-07-29 08:20:18 -0700</date>
            <delta_ts>2020-08-04 08:37:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200729122015.patch</filename>
            <type>text/plain</type>
            <size>123830</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2RlMGUyNTI2MTYwYTE0NWE3ZDQ1MWU5MmM4ZTQzN2RjMTJmOTUwLi4xMGUzMGQxNmNiZGMwOGQw
NTlkZDJhYzJkY2RiOWZjODRkNzZkZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTkgQEAKKzIwMjAtMDctMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMsIGluY2x1ZGluZyBMTEludC4KKyAgICAgICAgSXQgaXMgYWxzbyBhZGRpbmcgYSBuZXcg
REZHIG5vZGUgYFB1dFByaXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBj
YXNlIG9mIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQor
ICAgICAgICBgcHV0X3ByaXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBh
cmUgdXNpbmcgd2l0aAorICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRy
eSB0byBjb21waWxlIGl0IGFzIGBQdXRCeUlkRGlyZWN0YAorICAgICAgICB1c2luZyBwcm9maWxl
ZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0Cisg
ICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lYCBub2Rl
LiBUaGlzIG5vZGUgZG9lc24ndAorICAgICAgICBoYXZlIGFueSBvcHRpbWl6YXRpb24gaW1wbGVt
ZW50ZWQgeWV0LCBhbmQgaXQgYWx3YXlzIGRvIGEgc2xvdyBwYXRoCisgICAgICAgIGNhbGwuIFRo
ZSBjYXNlIHRoYXQgZGlzYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBwdXRfcHJpdmF0ZV9uYW1l
YCBhcworICAgICAgICBgUHV0QnlJZERpcmVjdGAgaXMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGV2
YWx1YXRpb25zIG9mIHRoZSBzYW1lCisgICAgICAgIGNsYXNzLCBidXQgc3VjaCBwYXR0ZXJuIG1p
Z2h0IG5vdCBiZSBjb21tb24uIElmIHRoaXMgaHlwb3RoZXNpcyBzaG93cworICAgICAgICB0byBi
ZSBmYWxzZSwgdGhlcmUgaXMgc3BhY2UgdG8gb3B0aW1pemUgYFB1dFByaXZhdGVOYW1lYCBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4
SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJv
cGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5l
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2
YXRlRmllbGRQdXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6UHV0QnlJZERpcmVjdERhdGE6OlB1dEJ5SWREaXJlY3REYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpQdXRCeUlkRGlyZWN0RGF0YTo6YXNXb3JkKToKKyAgICAgICAgKEpTQzo6REZHOjpQdXRC
eUlkRGlyZWN0RGF0YTo6ZnJvbVdvcmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICog
Z2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21w
aWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVO
YW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNO
b25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIw
MjAtMDctMjkgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgZm9y
Li5vZiBpbnRyaW5zaWNzIGltcGxlbWVudGF0aW9uIGZvciAzMmJpdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhODYyODhiMmU3NzcwZTg4MTdhMGU4ZGIyYjQ4ZDcyNjM3
NzhkYzE1Li45ZmQ0OTVjM2RkMDY5OTA3YTVhZTc1OGYwYTFkMmY4ZTNhMWYzN2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDMsNyArNTQzLDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5k
cy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmgKQEAgLTk2OSw2ICs5NjgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGlt
ZS9PcHRpb25zTGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYwYzA1ZTAyM2U5NzFkNGM3MmM0NTMzODJl
YzlhZmI5M2ViMTI4ZTcuLmFmOGI2OGViZWMwZmMyOTg0NzdhMDlmMjNjZDYzYmJlNTRkNDMzMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4
NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3
NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEyNjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
REQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0Mg
LyogQVJNdjdSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNDEzNSw4ICs0MTM1LDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBh
cnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRC
ODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIx
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MTU2LDYgKzQxNTQsOCBAQAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTRE
MjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmll
bGRQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzU3MSw2ICs3NTcxLDggQEAKIAkJCQkzN0M3MzhEMTFFREI1Njcy
MDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQw
MTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50Lmgg
Ki8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQu
Y3BwICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRL
aW5kLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
Ki8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
aCAqLywKQEAgLTg0NDIsOCArODQ0NCw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyog
UHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRC
eVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmgg
Ki8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3Bw
ICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmgg
Ki8sCkBAIC0xMDE2Myw2ICsxMDE2Myw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIw
IC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5
REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRE
NTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIwMyw3ICsx
MDIwNCw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2
MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA1OTBkYjQyODc1NDFhYzRlMzE3ZWJk
YmRmZDI3NmRhNTczNDJjZTdlLi5mMmQzZDI1MGY0NWUxMzgyMjIzZmY5MWM5MGVmNDU5MjM4NGE1
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjgsNyArMjY4LDYgQEAgYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
LWJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNw
cAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcApAQCAtOTM2LDYgKzkzNSw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09w
dGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAK
K3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwCiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURl
c2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCA1ODc4NDVmZDUwZTMyZWJmYmVlNmRiZDhkNmVmMTA1OTRhYjNkMWM1Li45
NmUzZWRjYWFjNDE3MDBiODZhYmRjZGVlNGY4NTIzMjgzMDJkZGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ2LDEwICs0NiwxMCBA
QCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAogICAgIDpSZXN1bHRUeXBlLAogICAg
IDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVsZFB1dEtpbmQsCiAgICAgOlByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKICAgICA6UHV0QnlJZEZsYWdz
LAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlwZSwKICAgICA6U3RydWN0dXJl
LAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3Myw2ICs1NzMsMjAgQEAgb3AgOmdldF9wcml2YXRl
X25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKICAgICB9CiAK
K29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwdXRLaW5kOiBQcml2YXRlRmllbGRQdXRL
aW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAg
ICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLApAQCAtNTk4LDcgKzYxMiw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVj
dCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBm
bGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApp
bmRleCA1ZjU4NjU4YTJlNmIxZTQ0NmQ4M2EyMTAwMDI4NTNlYjIzOGNjNDFiLi42OTI4ZjdmODg2
OWM0ZWYzYmE1NThhZWU1NTM3NmExMzYxNzU5MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyNiw2ICsyMjYsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
UmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1l
LCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5
KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhP
cFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpCiAgICAgVVNFUyhPcEluQnlW
YWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVl
LCBwcm90b3R5cGUpCkBAIC0zOTQsNiArMzk1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUK
ICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVf
bmFtZToKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmlu
ZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiZmE2
MzBlM2Y4MWM1OTJmM2ViMWNmMGE3YjRkOTRlNmQxZDZhZGM1Li41MDI4OWE3MjU5M2IxYThjZmE0
YWQ4N2MzODU1MTJiZWI5YmEzMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcApAQCAtNTQxLDYgKzU0MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5
V2l0aFNpemUpCkBAIC0xMTM1LDYgKzExMzYsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMK
ICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1
dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdT
dHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAg
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAg
ICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzAxLDYgKzEzMjEsMjIgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0
ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IDM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMuLmUwNWEyNTY0OGEx
M2IwNTk3MmY2NjRjMzdkZTA4Y2QzYzg5NDk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU4LDQ2ICsyNTgsNiBAQCBz
dHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTxP
cGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7Ci0gICAg
dXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlw
ZTsKLQotICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVt
LCBlbmNvZGVkIGFzOgotICAgIC8vICAgICAgICAgIGlzU3RyaWN0Ci0gICAgLy8gICAgICAgICAg
ICAgdgotICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0Ci0gICAgLy8gICAgICAgICAg
IF4KLSAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwg
MiA9IENyZWF0ZSB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9IDI7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKLQot
ICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCi0gICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFs
RmxhZ3MgZmxhZ3MpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOwotICAgICAgICBh
dXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5w
cml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOwotICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8
IDEpIHwgaXNEaXJlY3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVy
dChUYXJnZXRUeXBlIGdwaSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNf
Y2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9
IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOwotICAgICAgICBhdXRvIGFj
Y2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7
Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lID8KLSAgICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9k
ZSkgOgotICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUpOwotICAgIH0KLX07Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNp
emUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+
Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEU+LCBzaXplPjsKQEAgLTQyNyw0ICszODcsMjQgQEAgc3RydWN0IEZpdHM8RUNNQU1v
ZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFByaXZhdGVGaWVsZFB1dEtpbmQs
IHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBG
aXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHJpdmF0ZUZpZWxk
UHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKHB1dE1v
ZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgY29udmVydChQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQmFzZTo6Y29udmVydChwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBQcml2YXRlRmllbGRQdXRLaW5kIGNvbnZlcnQodHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBw
dXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21C
eXRlKEJhc2U6OmNvbnZlcnQocHV0TW9kZSkpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU5MGZkMDdkMGQzNzEzMDIyZGRk
ODllOTY2NTYzYjA1ZjY0MGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgot
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7
Ci0gICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIkRp
cmVjdCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0
ZUZpZWxkQWRkKCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQi
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThh
ZGYyZDFiMzZjNjFjZTMwMmJmOWMyMzgyNTZhNzA1Njg3NjY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2RlLmgi
Ci0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51
bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAg
ICBQdXQsCi0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJsaWM6
Ci0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBlY21h
TW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21hTW9k
ZSk7Ci0gICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3Rv
cmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90eXBl
IGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3Mg
Y3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0
aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1v
ZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0K
LSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAgICBi
b29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nl
c3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQcml2
YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0g
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25z
dGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLSAg
ICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdz
KFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAg
ICAgOiBtX2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
KGFjY2VzcykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyMTVkNmI3ZTNjYTI5YWZk
YmVjMGE4NDQwYTM1NzhiYjU5MDMyYzI2Li42ZWNiODk4OTI2YTZjYTA2MDA4MTFhOTc3YjJiMTRm
MzlkMWEwZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
IkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFu
dC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzEyLDcgKzI3
MTMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0Ojpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGly
ZWN0KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBA
IC0yNzM2LDEzICsyNzM3LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1
dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZp
ZWxkUHV0S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0
QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZs
YWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0
ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRL
aW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggZjRhODI3ODkyZWU3ODlhNmIxNGJjMGU0ZDVjMDY4YWUzNTI1ZDllMy4uZDhjZmZjNTA5YmJm
MTkyMGRhY2VhMDAwZDA0ZDE3MTUzM2M4YzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDA3
NCw2ICs0MDc0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCBhYzQ3NzU4NGI0ODcwNWU3MzExNDdmOGRjZjBkZjc3NDE4NGFkYjMxLi4wZDY5YjM0ZWI5OTM0
Y2Y0NDc2NmQ0MzM4NTZlZjIwN2U3ZWM0Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI0NywxMCArMjQ3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVHZXRC
eUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBl
LCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgp
OwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJl
Y3QsIEVDTUFNb2RlKTsKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
Tm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVjdCwgRUNNQU1v
ZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAg
ICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAotICAgICAgICBib29sIGlz
RGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUpOworICAgICAgICBi
b29sIGlzRGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUsIFByaXZh
dGVGaWVsZFB1dEtpbmQgPSBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgdm9p
ZCBoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24s
IE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIERlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7CkBAIC0xMjY3LDE4ICsxMjY3LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFNb2RlIGVjbWFNb2RlKEJ5dGVjb2RlIGJ5
dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOwotfQotCi10ZW1wbGF0
ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9w
UHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKTsKLX0KLQogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVGFy
Z2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBBU1NFUlQo
Ynl0ZWNvZGVJbmRleCk7CkBAIC00ODEyLDIyICs0ODAwLDIzIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRC
eUlkKAotICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9k
ZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRT
dGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRL
aW5kIHByaXZhdGVGaWVsZFB1dEtpbmQpCiB7Ci0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBh
ZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFN
b2RlKSwgYmFzZSwgdmFsdWUpOwotICAgIGVsc2UKKyAgICBpZiAoaXNEaXJlY3QpIHsKKyAgICAg
ICAgUHV0QnlJZERpcmVjdERhdGEgaW5mbyhlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7
CisgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZERpcmVjdCwgT3BJbmZvKGlkZW50aWZpZXIpLCBP
cEluZm8oaW5mby5hc1dvcmQoKSksIGJhc2UsIHZhbHVlKTsKKyAgICB9IGVsc2UKICAgICAgICAg
YWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1
dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUp
OwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1
cywgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIEVDTUFNb2RlIGVj
bWFNb2RlKQorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNE
aXJlY3QsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSBlY21hTW9kZSwgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIGlmICghcHV0QnlJ
ZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9w
dGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVz
LmlzU2V0KCkpCiAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Ci0gICAgICAg
IGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCwgZWNtYU1vZGUpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQdXRL
aW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQ4MzUsNyArNDgyNCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFw
aC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQogICAgICAgICAg
ICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQogICAgICAgICAg
ICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBo
aWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUp
OworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00ODQ0LDcgKzQ4MzMsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgICAgIGlm
IChwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpU
cmFuc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBpZiAoIWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25kaXRpb25TZXQoKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFs
dWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBp
c0RpcmVjdCwgZWNtYU1vZGUsIHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDg4Nyw3
ICs0ODc2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgaWYgKCFjaGVjayh2
YXJpYW50LmNvbmRpdGlvblNldCgpKSkgewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7Cisg
ICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQdXRLaW5kKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00OTUwLDExICs0OTM5LDEyIEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1
dEJ5SWRWYXJpYW50OjpTZXR0ZXI6IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtp
bmQuaXNOb25lKCkpOwogICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9w
SW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhj
dXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOwogCiAgICAgICAgIE5v
ZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewotICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQ
dXRLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ5
OTgsNyArNDk4OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAg
fQogICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
ZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAg
IGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCwgZWNtYU1vZGUsIHByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfSB9CiB9CkBAIC02MDQ3LDYgKzYwMzcsNTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9i
eV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X3ByaXZh
dGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQo
Ynl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVj
b2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUu
bV92YWx1ZSk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVzQXNQdXRCeUlkID0gZmFsc2U7CisK
KyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdl
dChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJ
bmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3Qg
Y29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAg
ICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgor
ICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCisgICAgICAgICAgICAgICAgICAgICYmIGJ5
VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9v
a1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBjb21waWxlc0FzUHV0QnlJ
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNh
Y2hlZElkOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENl
bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlk
ZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZp
ZXJOdW1iZXJdOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9n
cmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkp
OworCisgICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5
VmFsSW5mby0+c3R1YkluZm8sIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29tcGlsZXNBc1B1dEJ5
SWQpIHsKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0RpcmVjdCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG5leHRPcGNvZGVJbmRleCgp
LCBFQ01BTW9kZTo6c3RyaWN0KCksIGJ5dGVjb2RlLm1fcHV0S2luZCk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8o
Ynl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQcm9wZXJ0eT4oKTsKICAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTgyNjAsNyAr
ODI5NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI3MSw3ICs4MzA2LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUp
OwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZl
IHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAg
IG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJl
IHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2Ug
bWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxYzZjNjZmODAyMzVjZjk2OWViYjIzMTYx
OTNjZDgzNDcwZDhjNDM1Li5hZDlmMjRjNTA4NjY4ZjA0NGQ0NTUzMmJlMzY1ZDMxNTc1OThlYjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTIsNiArMjkyLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1
cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBj
YXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0
cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRlZThlOTBmZTgxNDFkYmIxY2Ni
ZDliNTMzN2VlLi43MDAxNmNjZTgwN2RhZTYwODkyZmQ3OGZlZThmMWMyMzVhOGI5OWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY2LDYgKzY2Niw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAg
IGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzNjNzhlMzc1Yjk4OWVlZGUx
ZmJjYmZkMTNmZDQ2ZDdlZDBmMmUyMC4uOTA0ODVmMGJiYjQ3NWM0YzliZTEzNTU3OThiNTYwNjZl
YjI5MDkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzIx
LDYgKzMyMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1
dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOTBlOWIx
MzRlZWEwMjE4OTc0M2NmMTQxYTdkOWE2ZjJlNzE2YjA0My4uN2I2YTExOWRmZDlmMDMxMDFlNTU1
N2Y4MmQ0MGY3YTE1ZjFlOWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEV4aXRPSzoKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2FzZSBUeXBlT2Y6
CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhU
aGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0QnlW
YWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZGQwZDEyZGFm
OGQ5YTE5YzQxOGEwZGMzZDQ5MWNjYjcwMDQ0YWVmNy4uYTU4N2M3MWZkZmQ2MmNiNzY2MTU4M2Fm
NTZkYWQ5NzI3M2YxYjIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUy
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1
dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC0xMzYsNiArMTM3LDI5IEBA
IHN0cnVjdCBEYXRhVmlld0RhdGEgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFWaWV3
RGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCitzdHJ1Y3QgUHV0QnlJZERpcmVjdERh
dGEgeworICAgIFB1dEJ5SWREaXJlY3REYXRhKEVDTUFNb2RlIG1vZGUsIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0S2luZCkKKyAgICAgICAgOiBlY21hTW9kZShtb2RlKQorICAgICAgICAsIHByaXZh
dGVGaWVsZFB1dEtpbmQocHV0S2luZCkKKyAgICB7CisgICAgfQorCisgICAgdWludDE2X3QgYXNX
b3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHByaXZh
dGVGaWVsZFB1dEtpbmQudmFsdWUoKSkgPDwgOCkgfCBlY21hTW9kZS52YWx1ZSgpOworICAgIH0K
KworICAgIHN0YXRpYyBQdXRCeUlkRGlyZWN0RGF0YSBmcm9tV29yZCh1aW50MTZfdCB3b3JkKQor
ICAgIHsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6ZnJvbUJ5dGUod29y
ZCAmIDB4ZmYpOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBQcml2YXRl
RmllbGRQdXRLaW5kOjpmcm9tQnl0ZSgod29yZCAmIDB4ZmYwMCkgPj4gOCk7CisgICAgICAgIHJl
dHVybiBQdXRCeUlkRGlyZWN0RGF0YShlY21hTW9kZSwgcHV0S2luZCk7CisgICAgfQorCisgICAg
RUNNQU1vZGUgZWNtYU1vZGU7CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQ
dXRLaW5kOworfTsKKwogc3RydWN0IEJyYW5jaFRhcmdldCB7CiAgICAgQnJhbmNoVGFyZ2V0KCkK
ICAgICAgICAgOiBibG9jayhudWxscHRyKQpAQCAtMjI3MSw3ICsyMjk1LDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90
PigpKTsKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6Ci0g
ICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsOgpAQCAt
MjI3OSwxMiArMjMwMiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9k
ZTo6ZnJvbUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOworICAgICAgICBjYXNlIFB1dEJ5
SWREaXJlY3Q6CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZERpcmVjdERhdGE6OmZyb21Xb3Jk
KG1fb3BJbmZvMi5hczx1aW50MTZfdD4oKSkuZWNtYU1vZGU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0
dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBib29s
IGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7
CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVj
dDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2
YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2Fz
ZSBQdXRQcml2YXRlTmFtZToKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5k
Ojpmcm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAgICAgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OgorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWREaXJlY3REYXRhOjpmcm9tV29yZCht
X29wSW5mbzIuYXM8dWludDE2X3Q+KCkpLnByaXZhdGVGaWVsZFB1dEtpbmQ7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChv
cCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZTJjNDhh
ZWU1ZjBkYTkyOGJhOTQwNThlMTQxYzNlNWVkN2NlNDU2Zi4uZjdiNzY0Nzg3M2M2ODU2NTRlZDk4
NTI2Y2ZhNzEzYmJmZDY2NzFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaApAQCAtMjA5LDYgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0
QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5
SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2
N2M0ZmEwYjYzOS4uNDMzNTI2NTliMmFlMGFjMzU5N2Q5ZDVkYTg4OTBlZTk4YTg0NDJhMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1
dEtpbmQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJ
bmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQg
T3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9w
SW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQor
ICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1
ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAg
ZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNzEwM2Y5
ZGI5MGJkYjdmMzUwNWZkYzEyMzQ5ZDJiZmQ3NmQ0ZjJmMS4uMDVmNjVmMzg4YjlmMjRiMmU5MGY2
ZDgxMzFmNGE5MTgwMWM5YzEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzNzYsNiAr
MTM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAg
ICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAwNDBk
M2YzY2M4ZDRiNDE5NzcyYzlhMWFkNjhiNmU0YmQ5MjM3OTFmLi5kZTE2N2U1MzJiNWY5Y2FmZDVj
M2I4YTMyNTlkOWMzZmM4NmJiMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI1LDYgKzUyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBp
Z25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlW
YWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgog
ICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2ZWM5ZTA0NzZkZTFiMWY1MmNiZWNmOGU1Mzkw
ZDA0NjA4ZDMyZWM5Li43MTFmMGE3ZDQ2NmQxMTRkNGFmMTEyMTg2MzExNGQ1Y2U1ZGQ1MTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMzUyMSw2ICszNTIxLDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUq
IG5vZGUpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNW
YWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHlWYWx1ZS5qc1ZhbHVlUmVncygpOworICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKyAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworCisgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0Rl
ZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0
UHJpdmF0ZU5hbWVHZW5lcmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Ms
IHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVk
SW1tMzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEyNzIyLDcgKzEyNzM4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2Rl
KQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lz
dGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBO
b3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRT
cGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3RE
aXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQpAQCAtMTI3MzcsNyArMTI3NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAg
Y2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywg
c2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUt
PmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25l
KCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjc1Miw3ICsxMjc2OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVk
UHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRj
aEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3QsIG5vZGUtPmVjbWFNb2Rl
KCksIG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KQEAgLTE0MzgyLDcgKzE0Mzk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBy
b2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFN
b2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1
dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVs
ZFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKQEAg
LTE0Mzk0LDcgKzE0NDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwg
ZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAg
ICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2NjI1ZDYzOTZhNWVlZGVhZmVkNTZj
NjQwZmE4NzlmYzRlMTFjY2E3Li43ZmRiODhhZjllMDFhZTEzNjIyZmY4ZDBhODE3MjMzODIxYzk0
ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC03MjAsNyArNzIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNoZWNrTmV1dGVy
ZWQoTm9kZSopOwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlw
ZSk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
PSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7
CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQdXRLaW5kLCBFQ01BTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01v
ZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQpAQCAtMTM2MCw2ICsxMzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFs
Rm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdl
JiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9k
ZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQg
Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZh
dGVOYW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3Ry
dWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDhhOTVkZjU1Mjg0NmFhNjRkYmZlM2E2NGM2YzM3
NTM0YWI4NDkxNDAuLjcyMDllZDlhZDU1ZmQxMzVmZmM3NGM5NjlhNzQwYjVmNzM4MTA0Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtMjU5Niw2ICsyNTk2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRC
eVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUwZjJjZDBmM2RjYTA2Y2Zi
NWVhNmNkZmE5ZDdhOThiZWNlODEyOWYuLmNkZmIzMDNlZWJjYTMxZWMzZjg3MDdjOGU4ZmIwZGE4
NWJmNDc4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcApAQCAtMjkxOSw2ICsyOTE5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2Fz
ZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5NmE3ZjE2NDE0NjBhNTJlODI2
ZTVjOTM3Y2ZjZDg1NGQzOWJkNDJlLi45NWI1YTNkNWVjYmI5OGQzYjQ4YWY0ZDJhNGI5NzA3MzEx
NGUzYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0zOTMsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNWFiMzY4Y2E4MjFhMWRjOTcwNDM1NjEx
YTFjM2YzOTE5OGI3ZTJhZS4uZTBiN2FjMDVkZjU0ZmFkMWIxYjBhODgzNTc4Mzg0MzY1MjU1OWFm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApA
QCAtMTAxOCw2ICsxMDE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhU
aGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGls
ZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9t
aWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0Nv
bXBhcmVFeGNoYW5nZToKQEAgLTM5NDMsNiArMzk0NiwxNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisg
ICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0
eSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1f
bm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQ
cml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAg
ICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUs
IG1fb3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3Qo
KS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlX
cml0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDIxMyw2
ICs0MjI3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0
ZTsKICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOworICAgICAg
ICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQgPSBub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QgPyBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmll
bGRQdXRLaW5kOjpub25lKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIzMSw3ICs0MjQ2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJ
bmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+
b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRQ
dXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChq
aXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJl
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1
Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEy
NmFhODJlNzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpA
QCAtMTM5LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVz
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5o
IgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAxZTFjZjA2ZTMxNTdkMDUxNDk2NTI1MGU0YmMxM2JiMTAx
ZWRkYzJmLi45YWRjZjg4ZTllZDQ0MzJmYTZhZGVlMTY2MTIxNjViMTE5YjlkMGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MjUsNiArNDI1LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0
ZXJfYnlfaWQpCkBAIC01ODYsNiArNTg3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0
ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3N1YikKQEAgLTkwMSw3ICs5MDMsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklU
OjpsaW5rKCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90
SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVM
b2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8g
YmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFk
VHlwZUp1bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBl
SnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0
byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAg
ICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAg
ICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRp
b25JbmZvLmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAg
ICAgICAgICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50
ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlW
YWxDb21waWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZv
LnNsb3dQYXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYx
ZWIzMTZmZTMzMzlhOTdkNTBlYzU0YjE5NTZjNzk3Li4wZGQyMTIyNzQzZWZkMTZhY2EwM2RhMjUy
MWM3OWY2YmExOGZhMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTE2MSw2ICsxNjEs
MTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIEJ5
VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcCwg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJnZXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBu
ZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgICAgIDogYnlWYWxJbmZvKGJ5VmFsSW5mbykKKyAg
ICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorICAgICAgICAgICAgLCBu
b3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQorICAgICAgICAgICAgLCBkb25lVGFyZ2V0KGRvbmVU
YXJnZXQpCisgICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5leHRIb3RQYXRoVGFyZ2V0
KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbzsK
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4OwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXA7CkBAIC00MDYsNyArNDE1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBwcml2YXRl
IGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZChP
cCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxwZXIgZm9yIEdldEJ5VmFsIGFu
ZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0
ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBM
aXN0JiBzbG93Q2FzZXMpOwpAQCAtNjA1LDYgKzYxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKQEAgLTY4Niw2ICs2OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGQ4Zjk1YmIwZjdj
ZmM4OTgyYjM4ZTg3MGUxYmJiN2ExZDQ5MGQyYTAuLmFiNmIzNzU0MWYxOWM3ZjhkYmI3MWU0YTI4
M2E1NWJjNDBkMDdkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCB2b2lkIEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVn
IHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBl
Y21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVs
ZFB1dEtpbmQpCiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVl
KQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1
dEtpbmQpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRQdXRLaW5kKHByaXZhdGVGaWVsZFB1
dEtpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsK
IH0KQEAgLTE1MiwxMCArMTUyLDEwIEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJh
dGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpD
IEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogewotICAgIGlmIChtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgewor
ICAgIGlmICghbV9wcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKSB7CiAgICAgICAgIEFTU0VS
VChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKICAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNTdHJp
Y3QoKSk7Ci0gICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQorICAgICAgICBpZiAobV9wcml2YXRlRmllbGRQdXRLaW5k
LmlzRGVmaW5lKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCAyOWMyZDJl
NmQzMjhkYTljYjM3NjExNWQ5OTJlYTJhMmM1MGM1OTk0Li40MjFjNDZkZWJkN2FmZDAzNGM2MTgz
NWM5YjU4OTM5NjQ1ZGU2YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
Q29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQu
aCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEzMCwxMiBAQCBjbGFz
cyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGlj
OgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1v
ZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkUHV0S2luZChQ
cml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNW
YWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
LCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNz
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwg
UHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsNyArMTQ0LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRL
aW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
OworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgbV9wcml2YXRlRmllbGRQdXRLaW5kOwogfTsKIAog
Y2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyZjc2ZGIwMDY5
MjExOGFmODUyZTcwNjI5NTAyNzQyOTk4NWFjZmIyLi40NWY3ZjBjOTE4Y2ViM2JkYzc0N2U0M2Vk
Y2UzMjZmYTEwMmU2NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApA
QCAtNjk5LDIxICs2OTksMjEgQEAgQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2Rl
PE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5F
IEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVj
dCBvcCkKK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVO
YW1lPihPcFB1dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2Rl
KCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci1Qcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChPcCkKK1ByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kKE9wKQog
ewotICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOworICAgIHJldHVybiBQ
cml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJ
TkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQ
dXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgUHJpdmF0
ZUZpZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVGaWVsZFB1dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4o
T3BQdXRQcml2YXRlTmFtZSBvcCkKIHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmll
bGRBY2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIG9wLm1fcHV0S2luZDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCAxZmE2OWJhMmIyNjQwZGEwOTlhYTg3ZTc2ZDcwOTg2NWUwMjJiZjQ0Li41ODQ4YmU5MWRm
ZDhjNWQ3NzczOGEyMzRmZWM4ZTdkMmMxMmRlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTExMDUsNyArMTEwNSw2IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlCiAgICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNj
cmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCi0KIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMTExOSw2ICsxMTE4LDEzMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBz
dWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVy
dHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGlt
aXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vi
c2NyaXB0KSkgeworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChjYWxsRnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAhPSBCeXRlY29kZUluZGV4KDAp
KTsKKyAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CisgICAgICAg
ICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5m
by0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgICAg
IEpJVDo6Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KHZtLCBj
b2RlQmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBEaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAgICAgICAgICAgICBvcHRp
bWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZDsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5l
cmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRp
b25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
Q2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRp
b25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2ssIHN1YnNj
cmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkICYm
IG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlKSB7Cisg
ICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAxMCB0aW1lcyB3aXRob3V0
IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8vIG5ldmVyIG1ha2UgdGhhdCBt
aXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2Ygb3Bwb3J0dW5p
dHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgcHV0X3ByaXZhdGVfbmFt
ZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNvdW50IHVwIHNsb3dQYXRoQ291
bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAgICAgaWYgKCsrYnlWYWxJbmZv
LT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0g
T3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisgICAgaWYgKG9wdGltaXphdGlv
blJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgeworICAgICAgICAvLyBEb24n
dCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVmaW5lKCkgPyAgb3BlcmF0aW9u
RGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmlj
KTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgCisgICAgLy8gUHJpdmF0ZSBm
aWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAg
ICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29u
c3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNT
dHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2Jq
ZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworfQorCit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7
CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlw
dCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBz
Y29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nl
c3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2Rz
IGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9
IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VP
YmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJp
dmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2Rl
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICAv
LyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNh
bCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1v
ZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgaWYgKGJ5
VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMzhjZDlmZDljMTRjZmQ3MzhkZDU1MDVl
YzQ2YTI3MzYzNjkwYzljYy4uY2IxZGVkMjVhMjMyMTE4ODhjZGIyZDE5Y2UzYzllMTQ1MDJhYWM4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiSklUTWF0aElDRm9yd2FyZHMu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhS
ZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTE5MywxMCArMTk0LDEzIEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0
cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1
dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRl
RmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNN
QU1vZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSBXVEZf
SU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5r
Q2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRF
Uk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggYzIxYzBlNjFiZWIxNTM4YjYwYWUyYWEzMTcwYzU1MmEyM2YzNmJmZS4uNDMyODFh
ZTY4MDFiNTdlN2JiOGJjNTliMzk2ZTIxMjQzMzVmNTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5o
IgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZv
LmgiCiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpAQCAtMzE2LDcgKzMxNyw3IEBAIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNv
ZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJp
dmF0ZUZpZWxkUHV0S2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJh
cnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFs
V3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUu
CkBAIC0zNDYsNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2Rl
ID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUu
bV9lY21hTW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVC
bG9jay0+YWRkQnlWYWxJbmZvKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisK
KyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
KyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9u
SW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUp
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAg
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOwor
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBy
ZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKwor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQ
YXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3
ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3Qg
PyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAg
ICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzNTgsNyArMTQwMCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0
S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlO
YW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1w
KCkpOwogCkBAIC0xNDY5LDcgKzE1MTEsNyBAQCB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBDb25jdXJyZW50SlNMbwogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhD
YWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQog
ewotICAgIEFTU0VSVCgocHV0S2luZCA9PSBEaXJlY3QgJiYgT3A6Om9wY29kZUlEID09IG9wX3B1
dF9ieV92YWxfZGlyZWN0KSB8fCAocHV0S2luZCA9PSBOb3REaXJlY3QgJiYgT3A6Om9wY29kZUlE
ID09IG9wX3B1dF9ieV92YWwpKTsKKyAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIChP
cDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QgfHwgT3A6Om9wY29kZUlEID09IG9w
X3B1dF9wcml2YXRlX25hbWUpKSB8fCAocHV0S2luZCA9PSBOb3REaXJlY3QgJiYgT3A6Om9wY29k
ZUlEID09IG9wX3B1dF9ieV92YWwpKTsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3A+KCk7CiAKQEAgLTE0OTEsMTggKzE1MzMsMzEgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3MKICAgICB9CiAgICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7
CiAKKyAgICBhdXRvIG9wY29kZU5hbWUgPSBbXSgpIGNvbnN0ZXhwciB7CisgICAgICAgIGlmIChP
cDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpCisgICAgICAgICAgICByZXR1cm4g
InB1dF9ieV92YWxfZGlyZWN0IjsKKyAgICAgICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRf
cHJpdmF0ZV9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICJwdXRfcHJpdmF0ZV9uYW1lIjsKKyAg
ICAgICAgcmV0dXJuICJwdXRfYnlfdmFsIjsKKyAgICB9OworCiAgICAgYnlWYWxJbmZvLT5zdHVi
Um91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1fY29kZUJsb2NrLCBw
YXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICJCYXNlbGluZSBwdXRf
YnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3Bl
cnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0
YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAiQmFzZWxpbmUgJXMgd2l0aCBj
YWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBv
cGNvZGVOYW1lKCksIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOwogICAgIGJ5VmFs
SW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAorICAgIGF1dG8gZ2VuZXJpY0Z1bmN0
aW9uID0gcHV0S2luZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMg
OiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgaWYgY29uc3RleHByIChPcDo6b3Bjb2Rl
SUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgZ2VuZXJpY0Z1bmN0aW9uID0gYnl0
ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdl
bmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNh
bGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVz
cykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gRGlyZWN0ID8gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7
CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlvbikpOwogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCi0vLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgorLy8gc28gd2UgbGlzdCBvZmYgdGhlIHRocmVlIGV4
cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwg
UmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFs
RGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKK3RlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0
aENhY2hlZElkPE9wUHV0UHJpdmF0ZU5hbWU+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIs
IFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKaW5kZXggMmE1ZWNjNzQyMTQ1NTA0NzE1NzNiMDkxOThjYzE1ZWI0OTRiZmVkZC4u
ZWNlZTg1MWYxZWUwYjljOTczOTc2NGY1NTE3OTJmZGQyMjI5NjMzMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0z
MzEsNiArMzMxLDUwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiB9CiAKIAordm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
UHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8o
KTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywg
cmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAo
KTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFi
ZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBp
bGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUs
IGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKKworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1tt
X2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtp
bmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVn
VDMsIHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKKwor
ICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BS
KCkpOworICAgIGVtaXRMb2FkKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3Bl
cnR5UmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFn
R1BSKCksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJl
Z3MsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9i
eVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJn
ZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3Zh
bDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtNzA4LDcgKzc1Miw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAog
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLAotICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBk
aXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUp
OworICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGM1MjNlOGE2MDA2ZGRjNTNkMjU5OWE0ZDI0YzZl
OTRiNTRkY2FkYmQuLjhkNzljYTcxNWQyNTk2YzlhYTRmZDM2YmUyNzViODFiZmE0ZDU5OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCkBAIC01OCw5ICs1OCw5IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNp
bmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2
ZUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRl
ICJQdXRCeVZhbEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCBjMTI2M2ZmYTAzY2YwNjBhY2M2MzczNDg2ODIyYzcxYTlmN2Y2OWVhLi5m
OTA4MjgyOTY2ZTNmODYyNzg1ZTU2MmQyMDEwNjBhZWYxZTE1MGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcs
MTI2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkK
ICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFs
dWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29s
IGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFj
Y2VzcygpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0
cmljdCgpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5
R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICpp
bmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cg
OiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAg
ICAgfQogCi0gICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCgh
aXNQcml2YXRlRmllbGRBY2Nlc3MpOwotICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUg
PSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKLSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50
MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBp
ZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJz
Y3JpcHRBc1VJbnQzMikpIHsKLSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4
KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUg
PyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJv
dyk7Ci0gICAgICAgICAgICBMTElOVF9FTkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8v
IERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgog
ICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJ
TlRfRU5EKCk7CiAKLSAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJp
dmF0ZUZpZWxkQWNjZXNzKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGds
b2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERp
cmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAg
ICBlbHNlIHsKLSAgICAgICAgaWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAg
ICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAg
ICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJh
c2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwg
c2xvdCk7Ci0gICAgICAgICAgICBMTElOVF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAg
ICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBi
YXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQo
KTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQ
dXRQcml2YXRlTmFtZT4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0
eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1
ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSA6IG51bGxwdHI7
CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xh
c3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4g
c3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0
byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChieXRlY29kZS5tX3B1dEtp
bmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYmFzZU9iamVjdC0+
cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAg
ICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZ
U19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYg
c2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1YnNjcmlwdC5pc0NlbGwoKQorICAg
ICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewor
ICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJh
c2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBpZiAoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKKyAgICAgICAgICAgICAg
ICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1
cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkgeworICAgICAgICAgICAgICAgICAg
ICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUo
dm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikp
OworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRj
aHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkg
cHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9s
ZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAg
IG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJ
RCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgCisg
ICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAg
IAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90LnR5
cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVh
cCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYm
IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwg
YmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3UG9seVByb3RvKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9s
ZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJs
b2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNoIGJ1Z3Mg
aWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxlIGNhY2hpbmcKKyAgICAgICAgICAg
ICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9yZSB0byBhbiBleGlzdGluZyBwcm9w
ZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAgICAgICAgICAvLyBwYXRocyB0aGF0
IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5IGFuZCBm
b3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21l
IGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAorICAgICAgICAgICAgICAg
IC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9u
cyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRo
YXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1Y3R1cmUg
PT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRpZENhY2hl
UHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRh
dGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmll
cihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTExJ
TlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNkZGUyNWI5ZmUxYjY4ZDc3NjBkNGVl
ZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgzM2YzYTljMWNjYjhjZGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzYsNiAr
NzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRl
X25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1l
bnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
ZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3ByaXZh
dGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92
YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5
X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3NldHRlcl9i
eV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDI3NTA2OTBhMmZmODA5YzI0NjYzYzA4ZjViNmQz
MmFiZTM4Yjg4NDMuLmNmMTVmMTI3ZGJmMTM2ZWMyMGIxODgwMjM3ODYyYmI1MDcxZjc2ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCkBAIC02MDksNiArNjA5LDEzIEBAIG1hY3JvIHdyaXRlQmFycmllck9u
Q2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKICAgICAgICAgZW5kKQog
ZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBj
ZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdldChjZWxsRmllbGROYW1l
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRh
ZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxv
YWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVyRG9uZToKK2VuZAorCiBt
YWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lKQogICAg
IGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQpAQCAtMTY4OCw2ICsx
Njk1LDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQ
cml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQog
CitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5h
bWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIHdy
aXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisgICAgZ2V0
KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMs
IENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHks
IHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFn
LCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBs
b2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQy
CisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVO
YW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVy
dHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAg
ICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAg
ICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAg
ICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0s
IHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJl
bG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRh
dGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJh
c2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFt
ZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9ubHkg
dGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAgIGdl
dChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0Miwg
dDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwg
dDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0MykKKyAg
ICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkK
IAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2lu
dCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
aW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3ZWJiZmFhMzU0My4uZmFmZjc0MjNm
YTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MzQsNiAr
MTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsIE9wR2V0
UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3BhdGNoKCkKIGVuZCkK
IAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVO
YW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBn
ZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0Mywg
dDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFt
ZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBP
cFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEg
dDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2Ug
aGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVj
dHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5h
bWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQ
dXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNl
LCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1l
dGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdl
dChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0
MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246CisgICAgIyBUaGUgb25seSB0aGlu
ZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1f
dmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAg
IGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQxCisgICAg
c3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQorICAgIGRpc3BhdGNoKCkK
KworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNybyBwdXRC
eVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBjb250aWd1
b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmExMjM3N2E5
YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRL
aW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQucHJpbnQoIlNldCIpOworICAgIGVs
c2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQ
dXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRL
aW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJiNTY3NTJl
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZh
dGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAg
SWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitz
dHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90
IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyBy
ZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
UHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChO
b25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7
IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2lu
ZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAg
IHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29u
c3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3Zh
bHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAg
dWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkNzNiNGE4YThmNDBh
OGZiZjE1YmIyOGQ1ZWViZjQ4NTY5MGViNTAuLmFiYTYyYmViNzhhOTEwMzY3MjU5MzNjYzM5ZTE2
ZjUyN2U4MTc2MTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDctMjkgIENhaW8gTGltYSAgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9w
Y29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RpbmcgdGVzdHMgdGhhdCBl
bWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVjdXRpb24gaW4KKyAgICAgICAgRlRM
L0RGRy4KKworICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1h
cy1wdXQtYnktaWQtZGlyZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1nZW5lcmljLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQt
c3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1zZXQt
YmVmb3JlLWRlZmluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIw
LTA3LTI5ICBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIGZvci4u
b2YgaW50cmluc2ljcyBpbXBsZW1lbnRhdGlvbiBmb3IgMzJiaXRzCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGly
ZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMt
cHV0LWJ5LWlkLWRpcmVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2VjOGFkYmM0ODE0YTM2MGNjODM1ODA3
ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpAQCAtMCwwICsx
LDU0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUi
LCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4
ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2Ns
YXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAg
ICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0gYXJy
W2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAy
IikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09ICJw
MyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1sicDIi
XSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRo
aXMuI2ZpZWxkID0gdjsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEM7CisgICAgaWYg
KGkgPiA1MDAwKSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGMuc2V0RmllbGQuY2FsbCh7fSk7CisgICAgICAgIH0pOworICAgIH0g
ZWxzZQorICAgICAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ2YzI5OWM2NjI3MGJhYmNhM2QwMDdi
N2E3ODMwOTc3Mjc5NGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNs
YXNzRGVjbGFyYXRpb24oZHluYW1pY1Byb3BlcnR5KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
ICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgIAorICAgICAgICBpbml0KCkgeworICAgICAgICAg
ICAgdGhpc1tkeW5hbWljUHJvcGVydHldID0gZHluYW1pY1Byb3BlcnR5OworICAgICAgICB9CisK
KyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
ICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4j
ZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisK
KyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworCitmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQ2xhc3MgPSBjbGFzc0RlY2xhcmF0
aW9uKCdwcm9wZXJ0eScgKyBpKTsKKyAgICBsZXQgYyA9IG5ldyBDbGFzcygpOworICAgIGMuc2V0
RmllbGQoJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZh
bGlkLXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0
b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYzNDdjZWE2MDAwNWE5YjVmODY4YTBiNTNiZjIxZDc1YzI0ZmJi
MDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWlu
dmFsaWQtc3RvcmUuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rp
b24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9u
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhl
Y3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRTdG9yZSA9
IGZhbHNlOworCitmdW5jdGlvbiBmb28oKSB7CisgIGNsYXNzIEMgeworICAgICNmaWVsZCA9IHRo
aXMuaW5pdCgpOworICAgICNmb287CisKKyAgICBpbml0KCkgeworICAgICAgaWYgKHNob3VsZFN0
b3JlKQorICAgICAgICB0aGlzLiNmb28gPSAxMjsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3
IEMoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICBzaG91bGRTdG9yZSA9IHRydWU7CisgICAgYXNz
ZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgZm9vKCk7CisgICAgfSk7
CisgIH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5
bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21w
aWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzMxNGZhOWU3MDQ5ZjFi
ODBiMDJmYzBhNzE5NTQ3ZTdhMjFkYjkwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3lt
Ym9sLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24s
IGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAg
IGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHNldEZp
ZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorICAgIAor
ICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAg
bm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4g
QzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IEMyID0g
ZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShj
Mi5nZXRGaWVsZCgpLCAndGVzdCcpOworYzIuc2V0RmllbGQoJ2ZvbycpOworYXNzZXJ0LnNhbWVW
YWx1ZShjMi5nZXRGaWVsZCgpLCAnZm9vJyk7CisKK2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLnNldEZpZWxkLmNhbGwoYzIsICd0ZXN0
Jyk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjMi5zZXRG
aWVsZC5jYWxsKGMsICd0ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1vc3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LW9zci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY5NWExYWRlMzc2OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVj
MmRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1v
c3IuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBi
dXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAg
ICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0g
NTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rl
c3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0
Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5n
ZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5
bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2
ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1w
b2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisK
K2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAg
ICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJG
aWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQo
dikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3Rv
dHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhD
LnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2Zv
ciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5z
ZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
Zm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1zZXQtYmVmb3JlLWRlZmluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzA2YTcxZmE5MDdhZDE1YzE0M2Yx
YjdlN2Y4ODM5NGQwYTc3MzVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1zZXQtYmVmb3JlLWRlZmluZS5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZFN0b3Jl
ID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0g
dGhpcy5pbml0KCk7CisgICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxk
U3RvcmUpCisgICAgICAgIHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBu
ZXcgQygpOworfQorbm9JbmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgZm9vKCk7CisgICAgfSk7Cisg
IH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTdhMzI5N2JlZDgyZDdjMGM3ZTUyZDU1YTc1ZTVhYzIxMTgxYjdjYgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wu
anMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfQorfQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7
CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisK
KyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcp
OworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFkMzdkODE3ZWRlMTRhMjAzNWYzNWE2ODhiYTQxNWRhMTVmZDM3MjkKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlk
ZW50aWZpZXIuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0
aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisgICAgCisgICAgICAgIHNl
dEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisg
ICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAg
ICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAg
IG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJu
IEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKK2xldCBDMSA9IGNsYXNzRGVjbGFy
YXRpb24oKTsKK2xldCBDMiA9IGNsYXNzRGVjbGFyYXRpb24oKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBpICUgMiA/IG5ldyBDMSA6IG5ldyBDMjsK
KyAgICBjLnNldEZpZWxkKCd0ZXN0JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAndGVzdCcgKyBpKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405922</attachid>
            <date>2020-08-04 08:37:26 -0700</date>
            <delta_ts>2020-08-11 08:18:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200804123722.patch</filename>
            <type>text/plain</type>
            <size>118258</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Njg1MDZkN2QzZjRlMTRhYzkxYjcyNWFjNDVkYzU3YzQzZDM0M2Q3Li4xYWQ2ODNjZDJkZGI4ZGY3
NDYwZTg0ZDY3ZWQxNGMxMzBmZWQ2MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjAtMDgtMDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBCYXNl
bGluZSBhbmQgTExJbnQuCisgICAgICAgIEl0IGlzIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2Rl
IGBQdXRQcml2YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBg
cHV0X3ByaXZhdGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAg
YHB1dF9wcml2YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5n
IHdpdGgKKyAgICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29t
cGlsZSBpdCBhcyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBp
bmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAg
ICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lYCBub2RlLiBU
aGlzIG5vZGUgZG9lc24ndAorICAgICAgICBoYXZlIGFueSBvcHRpbWl6YXRpb24gaW1wbGVtZW50
ZWQgeWV0LCBhbmQgaXQgYWx3YXlzIGRvIGEgc2xvdyBwYXRoCisgICAgICAgIGNhbGwuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9u
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6
CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9k
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVj
dD4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
ZWNtYU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ByaXZhdGVGaWVsZFB1dEtp
bmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnByaXZhdGVGaWVsZFB1dEtpbmQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAg
ICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlW
YWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0
aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAg
ICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFBy
aXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPik6
CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVj
dD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hl
ZElkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGlt
ZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxk
UHV0S2luZC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJv
bUJ5dGUpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6aXNOb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNT
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6
CisKIDIwMjAtMDgtMDMgIEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSAyLjI5LjQgZmFpbHMgdG8gYnVpbGQgaW4gYXJtaGYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhODYyODhiMmU3NzcwZTg4MTdhMGU4ZGIyYjQ4ZDcyNjM3
NzhkYzE1Li45ZmQ0OTVjM2RkMDY5OTA3YTVhZTc1OGYwYTFkMmY4ZTNhMWYzN2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDMsNyArNTQzLDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5k
cy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmgKQEAgLTk2OSw2ICs5NjgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGlt
ZS9PcHRpb25zTGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxOTdmNmI2MGM4ZTNmYTViYjBlNzg3YjQ2
YWZlNGNlZmY0YmZlNDEuLjJjMzk2YTk1YTdiMzRjNDkxNmUwZGFmYWEzOTg0NWQ5YWIyZmYzOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4
NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3
NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEyNjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
REQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0Mg
LyogQVJNdjdSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNDEzNyw4ICs0MTM3LDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBh
cnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRC
ODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIx
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MTU4LDYgKzQxNTYsOCBAQAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTRE
MjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmll
bGRQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzU3Nyw2ICs3NTc3LDggQEAKIAkJCQkzN0M3MzhEMTFFREI1Njcy
MDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQw
MTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50Lmgg
Ki8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQu
Y3BwICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRL
aW5kLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
Ki8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
aCAqLywKQEAgLTg0NDgsOCArODQ1MCw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyog
UHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRC
eVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmgg
Ki8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3Bw
ICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmgg
Ki8sCkBAIC0xMDE3MCw2ICsxMDE3MCw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIw
IC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5
REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRE
NTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIxMCw3ICsx
MDIxMSw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2
MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMzEwYjlhNGNkZmQ2MWQ0NzgyZWY2
NjlkM2E5YjJkNWNlMzEwMmY2Li5kYmQ2NTFiZmRjZjk0ZmUyOTQ4Zjk4ODU1YjE3NmFkNjFmNjdl
MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
LWJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNw
cAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcApAQCAtOTM3LDYgKzkzNiw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09w
dGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAK
K3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwCiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURl
c2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCA1ODc4NDVmZDUwZTMyZWJmYmVlNmRiZDhkNmVmMTA1OTRhYjNkMWM1Li45
NmUzZWRjYWFjNDE3MDBiODZhYmRjZGVlNGY4NTIzMjgzMDJkZGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ2LDEwICs0NiwxMCBA
QCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAogICAgIDpSZXN1bHRUeXBlLAogICAg
IDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVsZFB1dEtpbmQsCiAgICAgOlByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKICAgICA6UHV0QnlJZEZsYWdz
LAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlwZSwKICAgICA6U3RydWN0dXJl
LAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3Myw2ICs1NzMsMjAgQEAgb3AgOmdldF9wcml2YXRl
X25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKICAgICB9CiAK
K29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwdXRLaW5kOiBQcml2YXRlRmllbGRQdXRL
aW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAg
ICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLApAQCAtNTk4LDcgKzYxMiw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVj
dCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBm
bGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApp
bmRleCA1ZjU4NjU4YTJlNmIxZTQ0NmQ4M2EyMTAwMDI4NTNlYjIzOGNjNDFiLi42OTI4ZjdmODg2
OWM0ZWYzYmE1NThhZWU1NTM3NmExMzYxNzU5MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyNiw2ICsyMjYsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
UmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1l
LCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5
KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhP
cFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpCiAgICAgVVNFUyhPcEluQnlW
YWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVl
LCBwcm90b3R5cGUpCkBAIC0zOTQsNiArMzk1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUK
ICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVf
bmFtZToKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmlu
ZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2YjVh
OTAyZDhhM2Q3N2Q0MjY5NTkwZTUzMDg5MWFjMjZkNzIxMWYwLi5mZDRmNjQwODg2ZjI4MGU5Y2Mw
NTg0MmVlZWMzYzZhNzhlZDIzZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcApAQCAtNTQyLDYgKzU0Miw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5
V2l0aFNpemUpCkBAIC0xMTM2LDYgKzExMzcsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMK
ICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1
dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdT
dHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAg
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAg
ICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzAyLDYgKzEzMjIsMjIgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0
ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IDM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMuLmUwNWEyNTY0OGEx
M2IwNTk3MmY2NjRjMzdkZTA4Y2QzYzg5NDk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU4LDQ2ICsyNTgsNiBAQCBz
dHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTxP
cGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7Ci0gICAg
dXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlw
ZTsKLQotICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVt
LCBlbmNvZGVkIGFzOgotICAgIC8vICAgICAgICAgIGlzU3RyaWN0Ci0gICAgLy8gICAgICAgICAg
ICAgdgotICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0Ci0gICAgLy8gICAgICAgICAg
IF4KLSAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwg
MiA9IENyZWF0ZSB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9IDI7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKLQot
ICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCi0gICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFs
RmxhZ3MgZmxhZ3MpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOwotICAgICAgICBh
dXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5w
cml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOwotICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8
IDEpIHwgaXNEaXJlY3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVy
dChUYXJnZXRUeXBlIGdwaSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNf
Y2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9
IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOwotICAgICAgICBhdXRvIGFj
Y2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7
Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lID8KLSAgICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9k
ZSkgOgotICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUpOwotICAgIH0KLX07Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNp
emUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+
Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEU+LCBzaXplPjsKQEAgLTQyNyw0ICszODcsMjQgQEAgc3RydWN0IEZpdHM8RUNNQU1v
ZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFByaXZhdGVGaWVsZFB1dEtpbmQs
IHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBG
aXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHJpdmF0ZUZpZWxk
UHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKHB1dE1v
ZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgY29udmVydChQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQmFzZTo6Y29udmVydChwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBQcml2YXRlRmllbGRQdXRLaW5kIGNvbnZlcnQodHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBw
dXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21C
eXRlKEJhc2U6OmNvbnZlcnQocHV0TW9kZSkpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU5MGZkMDdkMGQzNzEzMDIyZGRk
ODllOTY2NTYzYjA1ZjY0MGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgot
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7
Ci0gICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIkRp
cmVjdCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0
ZUZpZWxkQWRkKCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQi
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThh
ZGYyZDFiMzZjNjFjZTMwMmJmOWMyMzgyNTZhNzA1Njg3NjY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2RlLmgi
Ci0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51
bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAg
ICBQdXQsCi0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJsaWM6
Ci0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBlY21h
TW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21hTW9k
ZSk7Ci0gICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3Rv
cmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90eXBl
IGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3Mg
Y3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0
aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1v
ZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0K
LSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAgICBi
b29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nl
c3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQcml2
YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0g
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25z
dGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLSAg
ICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdz
KFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAg
ICAgOiBtX2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
KGFjY2VzcykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyMTVkNmI3ZTNjYTI5YWZk
YmVjMGE4NDQwYTM1NzhiYjU5MDMyYzI2Li42ZWNiODk4OTI2YTZjYTA2MDA4MTFhOTc3YjJiMTRm
MzlkMWEwZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
IkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFu
dC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzEyLDcgKzI3
MTMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0Ojpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGly
ZWN0KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBA
IC0yNzM2LDEzICsyNzM3LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1
dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZp
ZWxkUHV0S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0
QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZs
YWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0
ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRL
aW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggZjRhODI3ODkyZWU3ODlhNmIxNGJjMGU0ZDVjMDY4YWUzNTI1ZDllMy4uZDhjZmZjNTA5YmJm
MTkyMGRhY2VhMDAwZDA0ZDE3MTUzM2M4YzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDA3
NCw2ICs0MDc0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCBhYzQ3NzU4NGI0ODcwNWU3MzExNDdmOGRjZjBkZjc3NDE4NGFkYjMxLi40YTA4MThjMWI0NmU0
MGQwYTNmNjMyY2I2ZTA4OGU4NzcyYTc3MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI0OSw4ICsyNDksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1pdFB1dEJ5SWQo
CiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAg
Y29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsKICAgICB2b2lk
IGhhbmRsZVB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3Rh
dHVzJiwKLSAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgs
IEVDTUFNb2RlKTsKKyAgICAgICAgTm9kZSogYmFzZSwgTm9kZSogcHJvcGVydHksIENhY2hlYWJs
ZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25z
dCBQdXRCeUlkU3RhdHVzJiwKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZXgsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgIHZvaWQg
aGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBEZWxldGVCeVN0YXR1cywgRUNNQU1vZGUpOwpAQCAtMTI2NywxOCArMTI2Nyw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRl
Y29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8
PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1
dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdl
dGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5
dGVjb2RlSW5kZXgpOwpAQCAtNDgyMSwxMyArNDgwOSwyMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjplbWl0UHV0QnlJZCgKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgK
LSAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLAotICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
IHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4
LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBOb2RlKiBiYXNlLCBOb2RlKiBwcm9wZXJ0eSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBO
b2RlKiB2YWx1ZSwKKyAgICBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29s
IGlzRGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUgZWNtYU1vZGUs
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKIHsKKyAgICBhdXRvIGVt
aXRHZW5lcmljUHV0Tm9kZSA9IFsmXSAoKSB7CisgICAgICAgIGlmIChwcml2YXRlRmllbGRQdXRL
aW5kLmlzTm9uZSgpKQorICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwg
dmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhwcml2YXRlRmll
bGRQdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICB9OworCiAgICAgaWYgKCFw
dXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8
fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBpZiAoIXB1dEJ5SWRT
dGF0dXMuaXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKLSAg
ICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgIGVtaXRHZW5lcmljUHV0Tm9kZSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDgzNSwxMSArNDgzMCwxMiBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFu
LmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFP
cHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmdMaXN0U2l6ZSgpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAg
ICAgICAgIGVtaXRHZW5lcmljUHV0Tm9kZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzRGlyZWN0KSB7CisgICAgICAgICAgICBBU1NF
UlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIHZhcmlhbnRJbmRleCA9IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKTsgdmFyaWFudElu
ZGV4LS07KSB7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4
XS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtNDg4Nyw3ICs0ODgzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcElu
Zm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNl
KTsKICAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkgewotICAgICAg
ICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgICAgICBlbWl0R2VuZXJpY1B1dE5vZGUoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00OTUwLDYgKzQ5NDYsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAgICAgIEFTU0VSVChwcml2YXRlRmll
bGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRT
dGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKIAogICAg
ICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0NlbGxPdGhlciwgYmFzZSwgaWRlbnRp
Zmllck51bWJlciwgdmFyaWFudCk7CkBAIC00OTk4LDcgKzQ5OTUsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBkZWZhdWx0OiB7Ci0gICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBp
c0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAgICBlbWl0R2VuZXJpY1B1dE5vZGUoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNjA0Nyw2ICs2MDQ0LDUzIEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgICAgICAgICBOb2Rl
KiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0
eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0g
Z2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCB0cnlDb21waWxlQXNQdXRC
eU9mZnNldCA9IGZhbHNlOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBw
dXRCeUlkU3RhdHVzOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2sp
OworICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVj
b2RlSW5kZXgoKSkpLmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0
aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5m
byBiZWNvbWVzIG51bGwuCisgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBp
cyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAorICAgICAg
ICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAgICAgICAg
ICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAg
ICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVp
ZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAgICAgICAg
RnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2Vs
bCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwg
T3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBwdXRCeUlk
U3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50Q29kZU9y
aWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBvcHRpbWl6ZSBQdXRQcml2YXRlTmFtZSAKKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxMjYK
KyAgICAgICAgICAgIGlmICh0cnlDb21waWxlQXNQdXRCeU9mZnNldCkgeworICAgICAgICAgICAg
ICAgIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQo
YmFzZSwgcHJvcGVydHksIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCwgbmV4dE9wY29kZUluZGV4KCksIEVDTUFNb2RlOjpzdHJpY3Qo
KSwgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhieXRlY29kZS5tX3B1dEtpbmQp
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9w
dXRfcHJpdmF0ZV9uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2Rh
dGFfcHJvcGVydHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVmaW5lRGF0YVByb3BlcnR5PigpOwogICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtNjEyNiw3ICs2MTcwLDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAgICAg
ICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVu
dGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQo
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSwgaWRlbnRpZmll
ck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCwgbmV4dE9wY29kZUluZGV4KCks
IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlk
KGJhc2UsIG51bGxwdHIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCks
IGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QsIG5leHRPcGNv
ZGVJbmRleCgpLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIFByaXZhdGVGaWVsZFB1dEtp
bmQ6Om5vbmUoKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWQpOwogICAg
ICAgICB9CiAKQEAgLTgyNjAsNyArODMwNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBo
YW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkp
OworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBwcm9wZXJ0eSwgaWRlbnRpZmllciwg
aWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0
SW5kZXgsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7
CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI3MSw3ICs4MzE1
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNv
ZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFs
dWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3Ig
cHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExl
YXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlz
RGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAg
ICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0
IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhh
c2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxYzZjNjZmODAyMzVjZjk2OWViYjIz
MTYxOTNjZDgzNDcwZDhjNDM1Li5hZDlmMjRjNTA4NjY4ZjA0NGQ0NTUzMmJlMzY1ZDMxNTc1OThl
YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0yOTIsNiArMjkyLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9w
X3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAg
ICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1l
OgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5
IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRlZThlOTBmZTgxNDFkYmIx
Y2NiZDliNTMzN2VlLi43MDAxNmNjZTgwN2RhZTYwODkyZmQ3OGZlZThmMWMyMzVhOGI5OWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY2LDYgKzY2
Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJC
eUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
KyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5Ogog
ICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzNjNzhlMzc1Yjk4OWVl
ZGUxZmJjYmZkMTNmZDQ2ZDdlZDBmMmUyMC4uOTA0ODVmMGJiYjQ3NWM0YzliZTEzNTU3OThiNTYw
NjZlYjI5MDkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzIxLDYgKzMyMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAg
IGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNl
IFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBSZWdFeHBFeGVj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOTBl
OWIxMzRlZWEwMjE4OTc0M2NmMTQxYTdkOWE2ZjJlNzE2YjA0My4uN2I2YTExOWRmZDlmMDMxMDFl
NTU1N2Y4MmQ0MGY3YTE1ZjFlOWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0yNzQ3LDYgKzI3NDcsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2FzZSBUeXBl
T2Y6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdp
dGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgR2V0
QnlWYWxXaXRoVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZGQwZDEy
ZGFmOGQ5YTE5YzQxOGEwZGMzZDQ5MWNjYjcwMDQ0YWVmNy4uZTY1ODk1ZGRiYmIwZDVlZjk2MzBj
ZjM1YTlhZDRhYjYzNDc0ZDhhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAg
LTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVs
ZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1
bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC0yMjcxLDEzICsyMjcy
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9v
cEluZm8uYXM8dWludDhfdD4oKSk7CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAg
Y2FzZSBQdXRCeUlkOgotICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2Fz
ZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgIGNhc2Ug
UHV0QnlJZERpcmVjdDoKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9v
cEluZm8yLmFzPHVpbnQ4X3Q+KCkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyODUsNiArMjI4NiwyMyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNQcml2YXRlRmllbGRQdXRLaW5k
KCkKKyAgICB7CisgICAgICAgIGlmIChvcCgpID09IFB1dFByaXZhdGVOYW1lKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcml2
YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CisgICAgICAgIGlmIChvcCgpID09IFB1dFBy
aXZhdGVOYW1lKQorICAgICAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21C
eXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUo
KTsKKyAgICB9CisKICAgICBib29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBl
MmM0OGFlZTVmMGRhOTI4YmE5NDA1OGUxNDFjM2U1ZWQ3Y2U0NTZmLi5mN2I3NjQ3ODczYzY4NTY1
NGVkOTg1MjZjZmE3MTNiYmZkNjY3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCkBAIC0yMDksNiArMjA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhh
c1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVI
YXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIz
MGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJM
RShERkdfSklUKQpAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNp
dCBPcEluZm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBs
aWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGlj
aXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkg
eyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBt
X3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgICBleHBsaWNpdCBPcEluZm8oVCogcHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA3
MTAzZjlkYjkwYmRiN2YzNTA1ZmRjMTIzNDlkMmJmZDc2ZDRmMmYxLi4wNWY2NWYzODhiOWYyNGIy
ZTkwZjZkODEzMWY0YTkxODAxYzljMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3
Niw2ICsxMzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgog
ICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAg
ICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgog
ICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVu
dHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IDA0MGQzZjNjYzhkNGI0MTk3NzJjOWExYWQ2OGI2ZTRiZDkyMzc5MWYuLmRlMTY3ZTUzMmI1Zjlj
YWZkNWMzYjhhMzI1OWQ5YzNmYzg2YmIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjUsNiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0
ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3Nv
clByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDZlYzllMDQ3NmRlMWIxZjUyY2JlY2Y4
ZTUzOTBkMDQ2MDhkMzJlYzkuLmIwOGRjNzhlNmEwNzZmODQ4M2E2ZDg3MTdkN2M2NGZkNTM1MDBm
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0zNTIxLDYgKzM1MjEsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUo
Tm9kZSogbm9kZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9wdGltaXplIFB1dFByaXZh
dGVOYW1lIAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTUxMjYKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVl
T3BlcmFuZCBwcm9wZXJ0eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVl
UmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eVZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5l
KCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2
YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJv
cGVydHlSZWdzLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0z
MihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQzOTQsNyArMTQ0MTIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
R1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwg
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFN
b2RlLCBwdXRLaW5kLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKaW5kZXggNjYyNWQ2Mzk2YTVlZWRlYWZlZDU2YzY0MGZhODc5ZmM0
ZTExY2NhNy4uNWNlMzg1YjEyNjg4NTUyZDRhNmEyNTgwMDczYmU4ODNiMDRmMzMwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM2MCw2
ICsxMzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhT
dHJpbmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwog
ICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNo
aWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5
VmFsV2l0aFRoaXMoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
UHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCmluZGV4IDhhOTVkZjU1Mjg0NmFhNjRkYmZlM2E2NGM2YzM3NTM0YWI4NDkxNDAu
LjcyMDllZDlhZDU1ZmQxMzVmZmM3NGM5NjlhNzQwYjVmNzM4MTA0Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
MjU5Niw2ICsyNTk2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogewor
ICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBj
YXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUwZjJjZDBmM2RjYTA2Y2ZiNWVhNmNkZmE5ZDdh
OThiZWNlODEyOWYuLmNkZmIzMDNlZWJjYTMxZWMzZjg3MDdjOGU4ZmIwZGE4NWJmNDc4MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtMjkxOSw2ICsyOTE5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZTogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5NmE3ZjE2NDE0NjBhNTJlODI2ZTVjOTM3Y2ZjZDg1
NGQzOWJkNDJlLi45NWI1YTNkNWVjYmI5OGQzYjQ4YWY0ZDJhNGI5NzA3MzExNGUzYTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTMs
NiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2Fz
ZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggNWFiMzY4Y2E4MjFhMWRjOTcwNDM1NjExYTFjM2YzOTE5OGI3
ZTJhZS4uMmVlZGUwZGIyNjA4NzZmNGNmM2U5NTMxMGQ3ZTQ1ZGQyMGIxOTRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxOCw2ICsx
MDE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVO
YW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAg
ICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5n
ZToKQEAgLTM5NDMsNiArMzk0NiwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAg
IH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9wdGltaXplIFB1dFByaXZhdGVOYW1lIAorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MTI2CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2Vu
ZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJ
bnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsK
KyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CkBAIC00MjMxLDcgKzQyNDcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSks
IEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVy
YXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRv
bmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5k
ZXggZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNS4uNzMxNzEwMDk2Y2Yz
ZTI0OThhZTQ1ZGRhMjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKQEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1
dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMWUxY2YwNmUzMTU3ZDA1MTQ5NjUy
NTBlNGJjMTNiYjEwMWVkZGMyZi4uOWFkY2Y4OGU5ZWQ0NDMyZmE2YWRlZTE2NjEyMTY1YjExOWI5
ZDBhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2
YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg2LDYgKzU4Nyw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRf
YnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9i
eV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05MDEsNyArOTAzLDEyIEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1w
KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRl
eEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAg
ICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGls
YXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0
Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAg
ICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+KCk7CisgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNT
ZXQoKSkKKyAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihi
eVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRv
bmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVU
YXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJu
YWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAg
ICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENv
bXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggNTA4YWY1MGY2MWViMzE2ZmUzMzM5YTk3ZDUwZWM1NGIxOTU2Yzc5Ny4uMGRkMjEyMjc0M2Vm
ZDE2YWNhMDNkYTI1MjFjNzlmNmJhMThmYTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC0xNjEsNiArMTYxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0K
IAorICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBu
b3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhi
eVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAg
ICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9u
ZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0
SG90UGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZv
KiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtNDA2LDcg
KzQxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5
cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVG
aWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZv
ciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmll
ckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwNSw2ICs2MTQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKik7CkBAIC02ODYsNiArNjk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9w
dXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRl
eCBkOGY5NWJiMGY3Y2ZjODk4MmIzOGU4NzBlMWJiYjdhMWQ0OTBkMmEwLi5hYjZiMzc1NDFmMTlj
N2Y4ZGJiNzFlNGEyODNhNTViYzQwZDA3ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTM2LDExICsxMzYs
MTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5l
cmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBw
dXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisg
ICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJz
LCBiYXNlLCB2YWx1ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAs
IG1fcHV0S2luZChwdXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChw
cml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkUHV0S2luZChw
cml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xl
YXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVy
YXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsK
LSAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSkgewog
ICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAgICAgICAgIEFTU0VSVChtX2Vj
bWFNb2RlLmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgaWYgKG1fcHJpdmF0
ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
aW5kZXggMjljMmQyZTZkMzI4ZGE5Y2IzNzYxMTVkOTkyZWEyYTJjNTBjNTk5NC4uNDIxYzQ2ZGVi
ZDdhZmQwMzRjNjE4MzVjOWI1ODkzOTY0NWRlNmM0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNs
dWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsx
MzAsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJh
dG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2Vj
bWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAgICAgLCBtX3ByaXZhdGVG
aWVsZFB1dEtpbmQoUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKQogICAgIHsgfQogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRj
aCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHZv
aWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0
NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQ
dXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIG1fcHJpdmF0ZUZpZWxkUHV0
S2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5k
ZXggMmY3NmRiMDA2OTIxMThhZjg1MmU3MDYyOTUwMjc0Mjk5ODVhY2ZiMi4uNDVmN2YwYzkxOGNl
YjNiZGM3NDdlNDNlZGNlMzI2ZmExMDJlNjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0KIAogdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9w
UHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8
T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAgICByZXR1cm4gb3AubV9m
bGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxk
UHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsK
KyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwogfQogCiB0ZW1wbGF0ZTw+
Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNf
SU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kPE9wUHV0
UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxh
Z3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBvcC5tX3B1dEtpbmQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggMWZhNjliYTJiMjY0MGRhMDk5YWE4N2U3NmQ3MDk4NjVlMDIyYmY0
NC4uNTg0OGJlOTFkZmQ4YzVkNzc3MzhhMjM0ZmVjOGU3ZDJjMTJkZTUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMTA1LDcgKzExMDUsNiBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFz
ZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAotCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTExMTksNiArMTExOCwxMzIgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3Qo
YmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6YXRpb25S
ZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKworICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50
aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgp
KSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0
ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgeworICAgICAgICAgICAgICAg
IGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgeworICAgICAg
ICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZh
dGVOYW1lPih2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgRGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAgICAg
ICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6
ZWQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2Vl
bSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29k
ZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6
Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpT
ZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0aCBtb3JlIHRoYW4gMTAg
dGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQorICAgICAgICAvLyBuZXZl
ciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRo
IG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIHB1
dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAgICAvLyBXZSBjb3VudCB1
cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZlVXAuCisgICAgICAgIGlm
ICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgIH0KKworICAgIGlm
IChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKKyAg
ICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAgICAgIGJ5VmFsSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgcHV0S2luZC5pc0RlZmluZSgp
ID8gIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZh
dGVOYW1lR2VuZXJpYyk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIAorICAg
IC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhp
Y2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3Qg
bW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VP
YmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAg
ICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5wdXRQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30K
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVy
dHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2Fu
IG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQg
Y2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBp
c1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2Rl
KTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgc2NvcGUucmVsZWFz
ZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGlu
IGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlz
IGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAg
IGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDM4Y2Q5ZmQ5YzE0
Y2ZkNzM4ZGQ1NTA1ZWM0NmEyNzM2MzY5MGM5Y2MuLmNiMWRlZDI1YTIzMjExODg4Y2RiMmQxOWNl
M2M5ZTE0NTAyYWFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVE1h
dGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1
ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0xOTMsMTAgKzE5NCwxMyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJ
bmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFs
SW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFt
ZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0lu
Zm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCmluZGV4IGMyMWMwZTYxYmViMTUzOGI2MGFlMmFhMzE3MGM1NTJhMjNm
MzZiZmUuLjQzMjgxYWU2ODAxYjU3ZTdiYjhiYzU5YjM5NmUyMTI0MzM1ZjU0YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByaXZhdGVG
aWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTMxNiw3
ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtp
bmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSks
IHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0
aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAg
ICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOworICAgICAgICBlY21hTW9k
ZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAg
LTM2OSw2ICszNzAsNDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleCsrOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbygpOworCisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0
eSwgcmVnVDEpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1
bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgCisgICAgTGFiZWwgZG9u
ZSA9IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlW
YWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1w
LCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBCeVZhbEluZm8qIGJ5VmFs
SW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5
VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1
dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRo
ID0gbGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7CisKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7CisgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUdQUik7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7Cisg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52
YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlv
bkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOworICAg
IG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9n
ZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlckJ5SWQ+
KCk7CkBAIC03MDAsNyArNzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAotICAgICAgICBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAg
ICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5
dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzU4LDcgKzE0MDAsNyBAQCBKSVRQ
dXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2Rl
LCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwg
cHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBy
ZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5
dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNl
cy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMTQ2OSw3ICsxNTExLDcgQEAgdGVtcGxhdGUgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbERpcmVjdD4oY29uc3QgQ29uY3Vy
cmVudEpTTG8KIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIE9wOjpvcGNv
ZGVJRCA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYm
IE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAgQVNTRVJUKChwdXRLaW5kID09
IERpcmVjdCAmJiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0IHx8IE9wOjpv
cGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKSkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0
ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAgICAgY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChi
eVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDkxLDE4ICsxNTMzLDMxIEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1ZmZlciwg
cGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0gW10oKSBjb25zdGV4cHIgewor
ICAgICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92YWxfZGlyZWN0KQorICAgICAg
ICAgICAgcmV0dXJuICJwdXRfYnlfdmFsX2RpcmVjdCI7CisgICAgICAgIGlmIChPcDo6b3Bjb2Rl
SUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAicHV0X3ByaXZh
dGVfbmFtZSI7CisgICAgICAgIHJldHVybiAicHV0X2J5X3ZhbCI7CisgICAgfTsKKwogICAgIGJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAogICAgICAgICBt
X2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAotICAgICAgICAi
QmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gRGlyZWN0KSA/ICJfZGlyZWN0
IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9j
b2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgIkJhc2Vs
aW5lICVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJu
IHBvaW50ICVwIiwgb3Bjb2RlTmFtZSgpLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRh
KCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgp
KTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKKyAgICBhdXRv
IGdlbmVyaWNGdW5jdGlvbiA9IHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIGlmIGNvbnN0ZXhw
ciAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUpCisgICAgICAgIGdlbmVyaWNG
dW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5l
UHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljOworCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91
dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChD
b2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+
KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09
IERpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRp
b25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFk
ZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihnZW5lcmljRnVuY3Rpb24pKTsK
IH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNs
YXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAotLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3
byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KKy8vIHNvIHdlIGxpc3Qgb2Zm
IHRoZSB0aHJlZSBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRl
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+
KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVk
SWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2lu
ZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7Cit0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPihCeVZhbEluZm8qLCBSZXR1
cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAogSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDJhNWVjYzc0MjE0NTUwNDcxNTczYjA5MTk4Y2Mx
NWViNDk0YmZlZGQuLmVjZWU4NTFmMWVlMGI5Yzk3Mzk3NjRmNTUxNzkyZmRkMjIyOTYzMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcApAQCAtMzMxLDYgKzMzMSw1MCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogfQog
CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+
YWRkQnlWYWxJbmZvKCk7CisKKyAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9w
ZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBw
YXRjaGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworCisgICAgTGFi
ZWwgZG9uZSA9IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBl
bmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQ
YXRoSm1wLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21w
aWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2
YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1Q1
LCByZWdUNCk7CisKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJl
Z3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRh
Z0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwg
dmFsdWVSZWdzLnRhZ0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZVJlZ3MsIHByb3BlcnR5
UmVncywgdmFsdWVSZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkp
KTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhd
LnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1tt
X2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZh
bEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9k
aXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0
X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKQEAg
LTcwOCw3ICs3NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpOb25lKTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUo
KSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25l
KCkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBmNjEwYzE5Nzc0NjlkY2Q4
YzhlMzA0NjMxY2FjNzQ2YmQ0Mjg0MTNmLi5jOGMyNjE1MjQzYWQ4YzBhNmRlZGQwZTBlZjM1NDVh
NDY3NDg3MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksOSArNTksOSBAQAogI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNp
bmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5o
IgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggYzEyNjNmZmEwM2NmMDYwYWNjNjM3MzQ4NjgyMmM3
MWE5ZjdmNjllYS4uZjkwODI4Mjk2NmUzZjg2Mjc4NWU1NjJkMjAxMDYwYWVmMWUxNTBjYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0x
MTc3LDQ4ICsxMTc3LDEyNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3Qo
KSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0
KCk7Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQ
cml2YXRlRmllbGRBY2Nlc3MoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1f
ZWNtYU1vZGUuaXNTdHJpY3QoKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
c3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgewotICAgICAgICBBU1NFUlQoIWlzUHJp
dmF0ZUZpZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRl
eFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExM
SU5UX0VORCgpOwogICAgIH0KIAotICAgIGlmIChzdWJzY3JpcHQuaXNEb3VibGUoKSkgewotICAg
ICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKLSAgICAgICAgZG91YmxlIHN1YnNj
cmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7Ci0gICAgICAgIHVpbnQzMl90IHN1
YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1YnNjcmlwdEFzRG91Ymxl
KTsKLSAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYm
IGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwg
aXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOwotICAgICAgICAgICAgTExJTlRfRU5EKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFu
IGV4Y2VwdGlvbi4KICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXko
Z2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkp
CiAgICAgICAgIExMSU5UX0VORCgpOwogCi0gICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5h
bWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmlj
dE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGRO
b3RUaHJvdyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChpc1ByaXZhdGVGaWVsZEFjY2Vzcykg
ewotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RN
b2RlKTsKLSAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRk
KCkpCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgTExJTlRfRU5EKCk7ICAgIAotICAgICAg
ICB9Ci0KICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RN
b2RlKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGds
b2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICB9CiAg
ICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
cHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKKworICAg
IGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2
bSkgOiBudWxscHRyOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNz
ZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBh
cmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0
cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAoYnl0
ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChieXRlY29kZS5tX3B1dEtpbmQuaXNTZXQoKSk7CisgICAgICAg
IGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7CisgICAgfQorICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgp
CisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAgICAmJiBzdWJzY3JpcHQu
aXNDZWxsKCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2Fj
aGVhYmxlKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKG9sZFN0
cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgICAg
ICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCisg
ICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgp
LT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9w
cG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+cmFyZURhdGEoKS0+c2hhcmVk
UG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJE
ZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJp
bmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQg
PSAwOworICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1f
bmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7
CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgp
OworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUo
dm0pOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAg
ICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2ssIHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1
Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihn
bG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4gJiYgIXNhd1BvbHlQcm90
bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3Ry
dWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUt
PmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5z
ZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc2VydCBoZWxw
cyBjYXRjaCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQgdG8gZGlzYWJsZSBjYWNoaW5n
CisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9uIHRoZW4gc3RvcmUgdG8gYW4g
ZXhpc3RpbmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25nCisgICAgICAgICAgICAgICAg
Ly8gcGF0aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElmIHdlIHJlaWZ5IGEgbGF6eSBw
cm9wZXJ0eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8gdG8gZGlzYWJsZSBjYWNoaW5n
LCB3ZSBtYXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxhY2UgSUMgZG9lcyBub3QKKyAg
ICAgICAgICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVzZSB0eXBlcyBvZiBzdHJ1Y3R1
cmUgdHJhbnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAvLyB0cmFu
c2l0aW9uIGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bmV3U3RydWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgbmV3U3RydWN0
dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkp
OworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fb2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2Ny
aXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggNmMzMDhkOWYzZGRlMjViOWZl
MWI2OGQ3NzYwZDRlZWUxMWIxYWE4OS4uYTYzNTRmZjlkOGE3ODc4MWUxOGNiZmU4MzNmM2E5YzFj
Y2I4Y2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKQEAgLTc2LDYgKzc2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9nZXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfdmFsX2RpcmVjdCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHV0X2dldHRlcl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9zZXR0ZXJfYnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlYmQzNmJhY2VkZDRlMDM4
MTQwMTYyOWY5NmExMTY1YTFlN2U5MzY2Li5hNjAyYWJmMDMyODJiMTIwZDNjNjFjZWY3OTk2MWEy
YTA5MDAxZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjE0LDYgKzYxNCwxMyBAQCBtYWNybyB3
cml0ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCiAg
ICAgICAgIGVuZCkKIGVuZAogCittYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2Fk
KHNpemUsIGdldCwgY2VsbEZpZWxkTmFtZSwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKyAgICBnZXQo
Y2VsbEZpZWxkTmFtZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDEsIENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKKyAgICB3cml0ZUJhcnJpZXJP
bkNlbGxXaXRoUmVsb2FkKHQyLCByZWxvYWRBZnRlclNsb3dQYXRoKQorLndyaXRlQmFycmllckRv
bmU6CitlbmQKKwogbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdldCwgY2VsbEZp
ZWxkTmFtZSkKICAgICBnZXQoY2VsbEZpZWxkTmFtZSwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkK
QEAgLTE2OTMsNiArMTcwMCw0OCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRl
X25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3Bh
dGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBP
cFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3Zh
bHVlKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdl
dChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MywgQ2VsbFRhZywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0
NSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0
dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAu
b3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFk
YXRhOjptX3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVO
YW1lU2xvdworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2Jq
ZWN0IGJhc2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBt
ZXRhZGF0YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3Ry
dWN0dXJlSURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAg
IHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMg
UmVsb2FkIG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAg
ICAjIFJlbG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MCwgLm9w
UHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlvbjoKKyAg
ICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xkcyB0aGUg
YmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MSwgdDIsIHQzKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQw
LCB0MiwgdDMpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNw
YXRjaCgpCitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0
LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCmluZGV4IDZmZTE3MzA3OGNhYzNjMWNjMTkxNDgwNjM2ZDI3N2ViYmZhYTM1
NDMuLmZhZmY3NDIzZmExNTVjYTUyOGM3NWQ4YzQ5YTZmZmM0YjM4YThmYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CkBAIC0xNzM0LDYgKzE3MzQsNDkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0
ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNw
YXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwg
T3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwoc2l6ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVy
dHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9w
UHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1
dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmlu
ZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdwor
CisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0
MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRo
aXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4g
Y3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBP
cFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAg
YnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXpl
LCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0
NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0
MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMg
VGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNl
LgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRb
dDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCisg
ICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAg
ICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkK
KwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2lu
dCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAg
bWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhMTIzNzdhOWIxM2U5MWJmZjNjYTA3MmQyZDM3OTA2ZjllNmNiNjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5k
LmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCit2b2lkIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoaXNTZXQoKSkKKyAgICAgICAgb3V0LnByaW50KCJT
ZXQiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiRGVmaW5lIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJpdmF0ZUZpZWxkUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJp
dmF0ZUZpZWxkUHV0S2luZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiY2RjNGNhMzA0OGVjN2RhMDFkYmEwZDBh
YWZjODRiYjU2NzUyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgUHJpbnRTdHJlYW07Cit9OworCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IFByaXZhdGVGaWVsZFB1dEtpbmQgeworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBOb25lID0gMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgU2V0
ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgRGVmaW5lID0gMjsKKworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBmcm9tQnl0ZSh1aW50
OF90IGJ5dGUpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZSk7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgbm9uZSgpIHsgcmV0dXJuIFByaXZhdGVG
aWVsZFB1dEtpbmQoTm9uZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1
dEtpbmQgc2V0KCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChTZXQpOyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGRlZmluZSgpIHsgcmV0dXJuIFByaXZh
dGVGaWVsZFB1dEtpbmQoRGVmaW5lKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTm9u
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gTm9uZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gU2V0OyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzRGVmaW5lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBEZWZpbmU7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisKKyAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kKHVpbnQ4X3QgdmFsdWUpCisg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09
IE5vbmUgfHwgbV92YWx1ZSA9PSBTZXQgfHwgbV92YWx1ZSA9PSBEZWZpbmUsIG1fdmFsdWUpOwor
ICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4
Nzc4NmJiOGZkZTgzMDA1NmY0Y2VkMmM4MzUyMTQ2NDQ4ZTM0NTJkLi5mZWI2ZTk4YmIxZmM2NTVm
MTA4YjMwZWIzMjMyN2Y1MTEyYzdkMmQxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA4LTA0ICBDYWlv
IExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXVtFU05leHRdIENy
ZWF0ZSBhIG5ldyBvcGNvZGUgdG8gaGFuZGxlIHByaXZhdGUgZmllbGRzIHN0b3JlL2RlZmluZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0aW5n
IHRlc3RzIHRoYXQgZW1pdCBgZ2V0X3ByaXZhdGVfbmFtZWAgdG8gYXZvaWQgZXhlY3V0aW9uIGlu
CisgICAgICAgIEZUTC9ERkcuCisKKyAgICAgICAgKiBzdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5h
bWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5
bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13
aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtc2V0LWJlZm9yZS1kZWZpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzOiBB
ZGRlZC4KKwogMjAyMC0wOC0wMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ11bTUlQU10gVGVzdCBnYXJkZW5pbmcgSnVseSAzMXN0IGVkaXRpb24KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFz
LXB1dC1ieS1pZC1kaXJlY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFt
ZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4
MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0
LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9s
eW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAg
IHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJl
d0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAg
ICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3Rh
bmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUu
bmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xl
dCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBp
bml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAg
IGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBp
ZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAg
aWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAg
ICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBu
ZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAg
ICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2
MjcwYmFiY2EzZDAwN2I3YTc4MzA5NzcyNzk0ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30K
KworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbihkeW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgCisgICAgICAgIGluaXQo
KSB7CisgICAgICAgICAgICB0aGlzW2R5bmFtaWNQcm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7
CisgICAgICAgIH0KKworICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNm
aWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlv
bik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9
IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3BlcnR5JyArIGkpOworICAgIGxldCBjID0gbmV3IENsYXNz
KCk7CisgICAgYy5zZXRGaWVsZCgndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAndGVzdCcpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWludmFsaWQtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0N2NlYTYwMDA1YTliNWY4NjhhMGI1
M2JmMjFkNzVjMjRmYmIwOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3Vs
ZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3
RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFu
Y2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5u
YW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0
IHNob3VsZFN0b3JlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7Cisg
ICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAg
ICBpZiAoc2hvdWxkU3RvcmUpCisgICAgICAgIHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQor
CisgIHJldHVybiBuZXcgQygpOworfQorbm9JbmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0g
dHJ1ZTsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBm
b28oKTsKKyAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1p
bnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcz
MzE0ZmE5ZTcwNDlmMWI4MGIwMmZjMGE3MTk1NDdlN2EyMWRiOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0
aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUp
IHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4
ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5
Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAK
KyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
ICAgICB9CisgICAgCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkco
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KworICAgIHJldHVybiBDOworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9v
JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOwor
fQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3Nl
cnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICd0ZXN0Jyk7CitjMi5zZXRGaWVsZCgnZm9vJyk7
Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICdmb28nKTsKKworbGV0IGMgPSBuZXcg
QygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuc2V0RmllbGQu
Y2FsbChjMiwgJ3Rlc3QnKTsKK30pOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4g
eworICAgIGMyLnNldEZpZWxkLmNhbGwoYywgJ3Rlc3QnKTsKK30pOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtb3NyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNjk1YTFhZGUzNzY5YzYxNGRkYzkz
MDEzMmVhZjg4ZTIxZWMyZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkg
eworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKwor
Y2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAg
ICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAg
ICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0
aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZmM1MzY0Y2E5ZTAyY2U5NTIzYmFj
NDE1YzE4MDE0NmUxNTY4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAg
KzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlz
LmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAg
IHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisK
KyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAg
ICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25v
SW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAg
IGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rl
c3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtc2V0LWJlZm9yZS1kZWZpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MDZhNzFm
YTkwN2FkMTVjMTQzZjFiN2U3Zjg4Mzk0ZDBhNzczNWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXNldC1iZWZvcmUtZGVmaW5lLmpzCkBAIC0wLDAg
KzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhy
ZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0
YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBl
Lm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCits
ZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVuY3Rpb24gZm9vKCkgeworICBjbGFzcyBDIHsK
KyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAjZm9vOworCisgICAgaW5pdCgpIHsKKyAg
ICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAgdGhpcy4jZm9vID0gMTI7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lubGluZShmb28pOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAgc2hvdWxkU3RvcmUg
PSB0cnVlOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28o
KTsKKyAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICBmb28oKTsKKyAgfQorfQorCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgewor
ICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNm
aWVsZCA9ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQg
PSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZp
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcy
OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0
aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAo
YSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGNsYXNzRGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAg
ICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5z
ZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZH
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMx
ID0gY2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3
IEMxIDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406381</attachid>
            <date>2020-08-11 08:18:37 -0700</date>
            <delta_ts>2020-08-14 09:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200811121833.patch</filename>
            <type>text/plain</type>
            <size>135086</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZmY3ZjI2NjQxYjk4ZjZkOTYzOWNiYTg2NWQzNDU4NDU2Njk3NDJkLi4xNWI4YTA5MGNkMGM0MDVh
ZmM2MWMxMmQ3YWVjZGY0MGQ2MDk1ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjIgQEAKKzIwMjAtMDgtMTEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuCisgICAgICAgIEl0IGlz
IGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2YXRlTmFtZWAgdGhhdCBoYW5kbGVz
IGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZhdGVfbmFtZWAuIFRoZSBzdHJhdGVn
eSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2YXRlX25hbWVgIGlzIHZlcnkgc2lt
aWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAgICAgICAgYHB1dF9ieV92YWxbX2Rp
cmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBhcyBgW011bHRpXVB1dEJ5T2Zmc2V0
YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNl
bGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0
aGUgYFB1dFByaXZhdGVOYW1lYCBub2RlLiBXZSBnZXQgYW5vdGhlcgorICAgICAgICBjaGFuZ2Nl
IHRvIHRyYW5zZm9ybSBgUHV0UHJpdmF0ZU5hbWVgIHdpdGggYENoYWNoZWFibGVJZGVudGlmaWVy
c2AgaW50bworICAgICAgICBgUHV0QnlPZmZzZXRgIGlmIHdlIGNhbiBwcm92ZSBpdHMgc3RydWN0
dXJlIHNldCBhdCBjb25zdGFudCBmb2xkaW5nCisgICAgICAgIHBoYXNlLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgor
ICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzUHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cHJpdmF0
ZUZpZWxkUHV0S2luZCk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAg
ICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAq
IGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWNoZWRQdXRC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5
SWQpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6Omxp
bmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6QnlWYWxDb21waWxhdGlv
bkluZm86OkJ5VmFsQ29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xv
d1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1v
ZGU8T3BQdXRQcml2YXRlTmFtZT4pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZFB1
dEtpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZFB1dEtpbmQ8T3BQdXRQcml2
YXRlTmFtZT4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0
QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1By
aXZhdGVGaWVsZFB1dEtpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmZyb21CeXRlKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9u
ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCk6CisgICAgICAgIChK
U0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6OmlzTm9uZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1
dEtpbmQ6OmlzU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6
aXNEZWZpbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OlByaXZhdGVGaWVs
ZFB1dEtpbmQpOgorCiAyMDIwLTA4LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoKSBuZWdsZWN0ZWQg
dG8gc2V0IHRoZSBleGNlcHRpb24gcG9pbnRlciByZXN1bHQgaW4gb25lIGNhc2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTg2Mjg4YjJlNzc3MGU4ODE3YTBlOGRiMmI0
OGQ3MjYzNzc4ZGMxNS4uOWZkNDk1YzNkZDA2OTkwN2E1YWU3NThmMGExZDJmOGUzYTFmMzdhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQzLDcgKzU0Myw2IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUv
T3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29k
ZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5
dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NjksNiArOTY4LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL09wdGlvbnMuaAogICAg
IHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaAorICAgIHJ1bnRp
bWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAg
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MTk3ZjZiNjBjOGUzZmE1YmIw
ZTc4N2I0NmFmZTRjZWZmNGJmZTQxLi4yYzM5NmE5NWE3YjM0YzQ5MTZlMGRhZmFhMzk4NDVkOWFi
MmZmMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1NSw3ICsxMjU1LDYg
QEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4
MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyog
UHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYy
ODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpT
QmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAw
RTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAogCQk4NkFERDE0NTBGRERF
QTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fz
c2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAw
MDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZCODY5MDEy
NEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMz
NkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJs
ZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQxMzcsOCArNDEzNyw2IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBw
YXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVy
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFG
RjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyog
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMx
NDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDE1OCw2ICs0MTU2LDggQEAKIAkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8q
IE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1
ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGllcmVkTU1hcEFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1NYXBBcnJheS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUgLyogUHJp
dmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlRmllbGRQdXRLaW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVGaWVs
ZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkJGNjQyQTE0OERC
MkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkMzNkVFOTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlck1JUFMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NzcsNiArNzU3Nyw4IEBACiAJCQkJMzdDNzM4RDEx
RURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0UyMEJEMDIyMzdEM0FENDAw
NDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAgKi8sCiAJCQkJ
Q0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJB
Z2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQ
dXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0
YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJBIC8qIFByb2dyYW1FeGVj
dXRhYmxlLmggKi8sCkBAIC04NDQ4LDggKzg0NTAsNiBAQAogCQkJCTBGOTMzMjlBMTRDQTdEQzEw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0QTcxOEI5MkM0RDAwMTc4
QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRBODE4QjkyQzREMDAxNzhB
M0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0
S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1
c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0
dXNlcy5oICovLApAQCAtMTAxNzAsNiArMTAxNzAsNyBAQAogCQkJCUNFMjBCRDA3MjM3RDNFNDgw
MDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2ZW50Q29sbGVjdGlvblNj
b3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFFMDAxMDNBNjkgLyogUHJp
bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFBy
aXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkxNkIwMTU1RjI4NjMw
MENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMEFBRUUxRjQ0
RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMEFB
RUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMTAy
MTAsNyArMTAyMTEsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMxRkZEMyAvKiBQdXRCeUlk
RmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQ
dXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRBQTE4QjkyQzREMDAxNzhB
M0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2NzZDNkU4MjM0NjQ2
N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRD
MjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzMxMGI5YTRjZGZkNjFk
NDc4MmVmNjY5ZDNhOWIyZDVjZTMxMDJmNi4uZGJkNjUxYmZkY2Y5NGZlMjk0OGY5ODg1NWIxNzZh
ZDYxZjY3ZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjY5LDcgKzI2OSw2
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKQEAgLTkzNyw2ICs5MzYsNyBAQCBydW50aW1lL09iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNwcAogcnVu
dGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKIHJ1bnRpbWUvUHJv
cGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggNTg3ODQ1ZmQ1MGUzMmViZmJlZTZkYmQ4ZDZlZjEwNTk0YWIz
ZDFjNS4uOTZlM2VkY2FhYzQxNzAwYjg2YWJkY2RlZTRmODUyMzI4MzAyZGRhZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00NiwxMCAr
NDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywKICAgICA6UmVzdWx0VHlw
ZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQdXRLaW5kLAogICAgIDpQ
cm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCiAgICAgOlB1dEJ5
SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5cGUsCiAgICAgOlN0
cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzMsNiArNTczLDIwIEBAIG9wIDpnZXRf
cHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCiAg
ICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0S2luZDogUHJpdmF0ZUZp
ZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0cnVjdHVy
ZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxd
LAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3Ry
dWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAgICAgICAg
IGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OCw3ICs2MTIsNyBAQCBvcCA6cHV0X2J5X3Zh
bF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9m
aWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKaW5kZXggNWY1ODY1OGEyZTZiMWU0NDZkODNhMjEwMDAyODUzZWIyMzhjYzQxYi4uNjky
OGY3Zjg4NjljNGVmM2JhNTU4YWVlNTUzNzZhMTM2MTc1OTJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMjYsNiArMjI2
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3Rl
ciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvckdlbmVy
aWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBw
cm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQorICAg
IFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQogICAgIFVTRVMo
T3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9m
LCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk0LDYgKzM5NSw3IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9i
eV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9w
cml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2FzZSBv
cF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9w
ZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggNmI1YTkwMmQ4YTNkNzdkNDI2OTU5MGU1MzA4OTFhYzI2ZDcyMTFmMC4uZmQ0ZjY0MDg4NmYy
ODBlOWNjMDU4NDJlZWVjM2M2YTc4ZWQyM2ZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAgICAgTElOSyhPcFB1dEJ5
VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAgICAgIExJTksoT3BQdXRQ
cml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJTksoT3BO
ZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZvaWQgQ29kZUJsb2NrOjpw
cm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRv
ciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJl
KSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8
fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgaWYgKCF2
bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPQorICAgICAgICAgICAg
ICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOwor
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0KKyAgICAgICAgICAgICAg
ICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKTsKKyAg
ICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMwMiw2ICsxMzIyLDIyIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAg
IG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgfSk7CiAKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICBKU0NlbGwqIHByb3Bl
cnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgIGlmICgoIW9sZFN0
cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYgKCFwcm9wZXJ0eSB8fCB2
bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVj
dHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHV0
X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAg
ICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFk
YXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAg
aWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQp
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJmNmI4YTBhYWUzLi5lMDVh
MjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2Rl
RmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNj
b3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1OCw0NiArMjU4
LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgfQogfTsKIAotdGVt
cGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywgc2l6ZT4g
ewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNp
Z25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5kIGEgMiBi
aXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0cmljdAotICAgIC8vICAg
ICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAotICAgIC8vICAg
ICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5vbmUsIDEg
PSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNEaXJlY3RC
aXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAyOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sgPSAxMjsK
LSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCA9
IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQ
dXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAgICBhdXRvIGlzU3RyaWN0
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKLSAg
ICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
ZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAgcmV0dXJuIChwcml2YXRl
RmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8IChpc1N0
cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBQdXRCeVZhbEZsYWdz
IGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0g
c3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0gICAgICAgIGF1dG8gaXNT
dHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKLSAgICAgICAg
YXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigoZ3BpICYg
c19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nlc3NLaW5k
U2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3MgPT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBpc0RpcmVjdCA/IFB1dEJ5
VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGUo
ZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUpIDog
UHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsKLSAgICB9
Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0
czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNf
ZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVy
bHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0IEBAIHN0cnVjdCBGaXRz
PEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKICAgICB9CiB9
OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQcml2YXRlRmllbGRQ
dXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBC
YXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFByaXZh
dGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjaGVj
ayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpU
YXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdl
dFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5k
Ojpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9Cit9OworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlOTBmZDA3ZDBkMzcx
MzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
LQotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQotewotICAgIENvbW1hUHJpbnRlciBjb21t
YSgifCIpOwotICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQotICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJEaXJlY3QiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRQdXQoKSkKLSAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1dCIpOwotICAgIGlmIChmbGFncy5p
c1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmll
bGQrQWRkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDk4YWRmMmQxYjM2YzYxY2UzMDJiZjljMjM4MjU2YTcwNTY4NzY2N2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFQ01B
TW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA6IHVpbnQ4X3QgewotICAgIE5v
bmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNsYXNzIFB1dEJ5VmFsRmxhZ3Mgewot
cHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGUoRUNNQU1v
ZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhmYWxzZSwg
ZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFucyB0aGF0
IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQotICAgIC8vIHBy
b3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKEVDTUFNb2Rl
IGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHBy
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21h
TW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGJvb2wgaXNEaXJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOyB9
Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQ7IH0KLSAgICBib29s
IGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZTsgfQotCi1wcml2YXRlOgotCi0g
ICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKLSAgICAgICAgLCBtX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKLSAgICAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlW
YWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2VzcywgRUNNQU1vZGUgZWNtYU1vZGUp
Ci0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50U3Ry
ZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxh
Z3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMjE1ZDZiN2Uz
Y2EyOWFmZGJlYzBhODQ0MGEzNTc4YmI1OTAzMmMyNi4uNmVjYjg5ODkyNmE2Y2EwNjAwODExYTk3
N2IyYjE0ZjM5ZDFhMGU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxpbmtUaW1l
Q29uc3RhbnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxk
UHV0S2luZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgpAQCAtMjcx
Miw3ICsyNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RH
ZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGIKIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERp
cmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNy
ZWF0ZURpcmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlz
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsK
IH0KIApAQCAtMjczNiwxMyArMjczNywxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7
Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUs
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7Cisg
ICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFBy
aXZhdGVGaWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAg
ICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0
QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1
dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZp
ZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IGY0YTgyNzg5MmVlNzg5YTZiMTRiYzBlNGQ1YzA2OGFlMzUyNWQ5ZTMuLjdmMWFl
MzQ3MmRmMGI5MDY1ODBiYTg0NTJlMTRiNDY2NzljMzRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTQwMTgsMTYgKzQwMTgsMjMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNh
c2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJl
Y3Q6IHsKKyAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgJiYgIW5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZh
bHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVj
dHVyZS5pc0Zpbml0ZSgpKSB7CisgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3Ao
KSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWU7CiAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOworICAgICAgICAg
ICAgICAgIGlzRGlyZWN0KTsKIAogICAgICAgICAgICAgYm9vbCBhbGxHb29kID0gdHJ1ZTsKICAg
ICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhYzQ3NzU4NGI0ODcwNWU3MzEx
NDdmOGRjZjBkZjc3NDE4NGFkYjMxLi41MGFhY2E2MTc3Y2NlNTBmNDUwZmFkOWRmZDRhYzJkZmY1
ZTU1ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlk
RmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxG
bGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxp
Z25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTI0OSw4ICsyNDks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYs
IGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCi0gICAg
ICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiwKLSAgICAgICAgYm9vbCBp
c0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIEVDTUFNb2RlKTsKKyAgICAgICAg
Tm9kZSogYmFzZSwgTm9kZSogcHJvcGVydHksIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiwKKyAg
ICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIEVDTUFNb2Rl
LCBQcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwpAQCAtMTI2NywxOCArMTI2Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Fu
eUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNv
ZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICByZXR1cm4g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01B
TW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5dGVjb2Rl
KQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0KIEJhc2lj
QmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgy
MSwxMyArNDgwOSwyMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKIH0KIAog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5v
ZGUqIHZhbHVlLAotICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wg
aXNEaXJlY3QsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSBlY21hTW9kZSkK
KyAgICBOb2RlKiBiYXNlLCBOb2RlKiBwcm9wZXJ0eSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25z
dCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBCeXRlY29kZUlu
ZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQg
cHJpdmF0ZUZpZWxkUHV0S2luZCkKIHsKKyAgICBhdXRvIGVtaXRHZW5lcmljUHV0Tm9kZSA9IFsm
XSAoKSB7CisgICAgICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKQorICAgICAg
ICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVs
ZFB1dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIH07CisKICAgICBpZiAoIXB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIGlmICghcHV0QnlJZFN0
YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwotICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgZW1pdEdlbmVyaWNQdXROb2RlKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00ODM1LDExICs0ODMwLDEyIEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4u
aXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQogICAgICAgICAgICAgfHwgIU9w
dGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQogICAgICAgICAgICAgfHwgcHV0
QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJ
bmxpbmluZ0xpc3RTaXplKCkpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOworICAgICAg
ICAgICAgZW1pdEdlbmVyaWNQdXROb2RlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmICghaXNEaXJlY3QpIHsKKyAgICAgICAgICAgIEFTU0VS
VChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgdmFyaWFudEluZGV4ID0gcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpOyB2YXJpYW50SW5k
ZXgtLTspIHsKICAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhd
LmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC00ODg3LDcgKzQ4ODMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2Up
OwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QsIGVjbWFNb2RlKTsKKyAgICAgICAgICAgIGVtaXRHZW5lcmljUHV0Tm9kZSgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQ5NTAsNiArNDk0Niw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIFB1dEJ5SWRWYXJpYW50OjpTZXR0ZXI6IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVs
ZFB1dEtpbmQuaXNOb25lKCkpOwogICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOwogCiAgICAg
ICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCB2YXJpYW50KTsKQEAgLTQ5OTgsNyArNDk5NSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAg
ICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlz
RGlyZWN0LCBlY21hTW9kZSk7CisgICAgICAgIGVtaXRHZW5lcmljUHV0Tm9kZSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfSB9CiB9CkBAIC02MDQ3LDYgKzYwNDQsNTEgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
b3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5
ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIHRyeUNvbXBpbGVBc1B1dEJ5
T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1
dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7
CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNv
ZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRo
ZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZv
IGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlz
IG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCisgICAgICAg
ICAgICAgICAgICAgICYmIGJ5VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAgICAgICAgICAg
JiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAg
ICB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlk
ZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlk
KCkpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFw
aC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAgICAgICAgICBG
cm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxs
KCkpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBP
cEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRT
dGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBib29s
IGlzRGlyZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIHBy
b3BlcnR5LCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QsIG5leHRPcGNvZGVJbmRleCgpLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJ5dGVj
b2RlLm1fcHV0S2luZCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2lu
ZCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3B1dF9wcml2YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVf
ZGF0YV9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BEZWZpbmVEYXRhUHJvcGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBi
YXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CkBAIC02MTI2LDcgKzYxNjgsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAgICAg
ICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lk
ZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaGFuZGxlUHV0QnlJ
ZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVudGlm
aWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBuZXh0T3Bjb2RlSW5kZXgo
KSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5
SWQoYmFzZSwgbnVsbHB0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlk
KSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCwgbmV4dE9w
Y29kZUluZGV4KCksIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAg
ICAgICAgIH0KIApAQCAtODI2MCw3ICs4MzAyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAgICAgICAgICAg
IGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIHByb3BlcnR5LCBpZGVudGlmaWVy
LCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4
aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgp
KTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC04MjcxLDcgKzgz
MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRl
Y29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2
YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZv
ciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8g
TGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywg
aXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgT3BJbmZvKGVjbWFNb2RlKGJ5dGVjb2RlKSkpOworICAgICAgICBhZGRUb0dyYXBo
KE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcElu
Zm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpKTsKICAg
ICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1dEJ5VmFsRGlyZWN0IG11
c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQ
aGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDFjNmM2NmY4MDIzNWNmOTY5ZWJi
MjMxNjE5M2NkODM0NzBkOGM0MzUuLmFkOWYyNGM1MDg2NjhmMDQ0ZDQ1NTMyYmUzNjVkMzE1NzU5
OGViNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTI5Miw2ICsyOTIsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ug
b3Bfc3VwZXJfc2FtcGxlcl9iZWdpbjoKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfZW5kOgog
ICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZToKKyAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25h
bWU6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9z
d2l0Y2hfc3RyaW5nOiAvLyBEb24ndCBpbmxpbmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNv
cHkgc3RyaW5nIHRhYmxlcyBpbiB0aGUgY29uY3VycmVudCBKSVQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg1MjAwZDVkYWYxZGVlOGU5MGZlODE0MWRi
YjFjY2JkOWI1MzM3ZWUuLjcwMDE2Y2NlODA3ZGFlNjA4OTJmZDc4ZmVlOGYxYzIzNWE4Yjk5ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02NjYsNiAr
NjY2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFB1dEdldHRlclNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFs
OgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6
CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKaW5kZXggYjk3YTI0M2ZjMWM3MzM1YTQwNWQ2OGU0NWQ0OWEzMmMyODE4ZjFjMC4u
NmU3ZmU3MmRlM2JkZWIyZTBlNTUyZGJkNmRjYjUzNGQ5MGYxZmE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAg
LTY1OCw5ICs2NTgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWRE
aXJlY3Q6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDogeworICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFB1dFByaXZhdGVOYW1lICYmICFub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAg
Tm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICAgICAgRWRnZSBj
aGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9
IGNoaWxkRWRnZS5ub2RlKCk7CkBAIC02NjksMTYgKzY3MywxOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9z
dGF0ZS5mb3JOb2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVl
VmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IGF1dG8gdmFsdWVFZGdlID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZSA/IG5vZGUtPmNo
aWxkMygpIDogbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2
YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7CiAKICAgICAgICAgICAgICAg
ICBpZiAoIWJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgIGJvb2wgaXNEaXJlY3QgPSBub2RlLT5vcCgp
ID09IFB1dEJ5SWREaXJlY3QgfHwgbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZTsKICAgICAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5z
ZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0
cnVjdHVyZVNldCgpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERp
cmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGlzRGlyZWN0KTsKIAogICAgICAgICAgICAgICAg
IGlmICghc3RhdHVzLmlzU2ltcGxlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDczYzc4ZTM3NWI5ODllZWRl
MWZiY2JmZDEzZmQ0NmQ3ZWQwZjJlMjAuLjkwNDg1ZjBiYmI0NzVjNGM5YmUxMzU1Nzk4YjU2MDY2
ZWIyOTA5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMy
MSw2ICszMjEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBQ
dXRTdGFjazoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDkwZTli
MTM0ZWVhMDIxODk3NDNjZjE0MWE3ZDlhNmYyZTcxNmIwNDMuLjZhOGE0NjNhMGMyNDllYTkwOTRm
OThmNGY4ODliOGNmNmNiZDZjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcApAQCAtMTg5Nyw2ICsxODk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBDcmVhdGVQcm9taXNlOgogICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICAgICAg
Y2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToK
ICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCmluZGV4IGRkMGQxMmRhZjhkOWExOWM0MThhMGRjM2Q0OTFjY2I3MDA0NGFl
ZjcuLmMwZmNiNDM1ZmU0NmZhOTI3NmQ1ODc2ZDk2NmNmYzY5NjNmNjI1OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR2V0QnlJ
ZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZh
cmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2Nh
dGlvbi5oIgpAQCAtNjE1LDkgKzYxNiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9QdXRCeU9mZnNldChTdG9yYWdlQWNjZXNzRGF0YSYgZGF0YSwgRWRnZSBzdG9yYWdlLCBF
ZGdlIGJhc2UpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3Ag
PT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRp
UHV0QnlPZmZzZXQpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0g
UHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRpUHV0
QnlPZmZzZXQgfHwgbV9vcCA9PSBQdXRQcml2YXRlTmFtZSk7CiAgICAgICAgIG1fb3BJbmZvID0g
JmRhdGE7Ci0gICAgICAgIGNoaWxkcmVuLnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7Cisg
ICAgICAgIGlmIChtX29wID09IFB1dFByaXZhdGVOYW1lKQorICAgICAgICAgICAgY2hpbGRyZW4u
c2V0Q2hpbGQzKGNoaWxkcmVuLmNoaWxkMygpKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAg
IGNoaWxkcmVuLnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAgIGNoaWxkcmVu
LnNldENoaWxkMihiYXNlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKHN0b3JhZ2UpOwog
ICAgICAgICBtX29wID0gUHV0QnlPZmZzZXQ7CkBAIC02MjUsOCArNjI5LDEwIEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNl
dERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1f
b3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFT
U0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0g
UHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWUpOwogICAgICAgICBtX29wSW5m
byA9IGRhdGE7CisgICAgICAgIGlmIChtX29wID09IFB1dFByaXZhdGVOYW1lKQorICAgICAgICAg
ICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGNoaWxkcmVuLmNoaWxkMygpKTsKICAgICAgICAgbV9vcCA9
IE11bHRpUHV0QnlPZmZzZXQ7CiAgICAgfQogICAgIApAQCAtMTA4OSw2ICsxMDk1LDcgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3MSwxMyArMjI3OCwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+
KCkpOwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAg
ICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
ICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAg
ICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90
PigpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yMjg1LDYgKzIyOTIsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAg
ICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBw
cml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmll
bGRQdXRLaW5kKCkpOworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisKICAgICBi
b29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlMmM0OGFlZTVmMGRhOTI4YmE5
NDA1OGUxNDFjM2U1ZWQ3Y2U0NTZmLi5mN2I3NjQ3ODczYzY4NTY1NGVkOTg1MjZjZmE3MTNiYmZk
NjY3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDks
NiArMjA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBt
YWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cEluZm8uaAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40
MzM1MjY1OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2lu
Y2x1ZGUgIkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgs
NiArNDksNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBv
cCkgOiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGlkZW50aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2Rl
IGVjbWFNb2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQg
T3BJbmZvKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFs
dWUoKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcElu
Zm8oVCogcHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA3MTAzZjlkYjkwYmRiN2YzNTA1
ZmRjMTIzNDlkMmJmZDc2ZDRmMmYxLi4wNWY2NWYzODhiOWYyNGIyZTkwZjZkODEzMWY0YTkxODAx
YzljMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3Niw2ICsxMzc2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5
SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dElu
dGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDA0MGQzZjNjYzhkNGI0MTk3
NzJjOWExYWQ2OGI2ZTRiZDkyMzc5MWYuLmRlMTY3ZTUzMmI1ZjljYWZkNWMzYjhhMzI1OWQ5YzNm
Yzg2YmIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC01MjUsNiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNl
IFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZp
bmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNh
c2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IGY0NmI0MTg3OTliOGUzNGI3NzYwMTZhOTllMGI2NDg3NzdlZDQxZDMu
LmRlZThmMWM2ZjExMjY3MWY2OTlhYTQ0ZDE2ZmZkM2RkNzAwZTI3NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0LDYgKzM1
MjQsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9k
ZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworCisgICAgaWYgKG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSkgeworICAgICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBE
RkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAvLyB0byBjaGVjayBpdCBo
ZXJlLgorICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERp
cmVjdCwgRUNNQU1vZGU6OnN0cmljdCgpLCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkpOwor
ICAgIH0gZWxzZSAgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eVZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJv
cGVydHlWYWx1ZS5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5l
KCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2
YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIH0KKworICAgIG5vUmVzdWx0KG5v
ZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdz
KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CkBAIC0xMjcyNCw3ICsxMjc0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgp
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQ
cml2YXRlRmllbGRQdXRLaW5kOjpub25lKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRT
cGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyNzM5LDcgKzEyNzY0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQpAQCAtMTI3NTQsNyArMTI3NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZh
bHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigp
OwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZh
bHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3Qs
IG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgRGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDM4NCw3ICsxNDQwOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwg
UHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlm
IChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xNDM5Niw3ICsxNDQyMSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywg
aWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2
YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKaW5kZXggNjYyNWQ2Mzk2YTVlZWRlYWZlZDU2YzY0MGZhODc5ZmM0ZTExY2NhNy4uN2ZkYjg4
YWY5ZTAxYWUxMzYyMmZmOGQwYTgxNzIzMzgyMWM5NGVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBpbGVDaGVja05ldXRlcmVkKE5vZGUqKTsKIAogICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIFByaXZh
dGVGaWVsZFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29t
cGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZv
aWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEzNjAsNiArMTM2MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqLCBF
ZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNo
aWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5v
ZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zmc2V0KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRl
eCA4YTk1ZGY1NTI4NDZhYTY0ZGJmZTNhNjRjNmMzNzUzNGFiODQ5MTQwLi43MjA5ZWQ5YWQ1NWZk
MTM1ZmZjNzRjOTY5YTc0MGI1ZjczODEwNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI1OTYsNiArMjU5Niwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29tcGls
ZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAppbmRleCAzMjU2NjBlNTM1ZDk1YjQwNWE1MWRlZGFiY2RlNjM2YjVlNGVlMDIwLi5l
ZDI4MTgyMThmMjM1NDcxYzMwMDQ5NTYxYTE0YTg1NWRmNzEzM2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5MTksNiAr
MjkxOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAg
Y29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDA3MTUzYjhlNDcxMmY2ODI5
YjZlYmM2MzIxNzQ2NmY4M2Q0NmMxYzQuLjAxNzMwMWM0N2Y0MDc2YjVjYzNiMzEyYjY5OGI2Njdl
MDU0N2Q2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0yNjYsNiArMjY2LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgZW1pdCBJQyBjb2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlk
ZW50aWZpZXIgYW5kIHdlIG5lZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAgICAvLyBi
YXJyaWVyIGZvciBpdC4gT24gZ2VuZXJpYyBjYXNlLCB3ZSBwZXJmb3JtIHN0b3JlIGJhcnJpZXIg
ZHVyaW5nIHNsb3cgcGF0aCBleGVjdXRpb24uCisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpKQorICAgICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJp
ZXIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZEZsdXNoOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDk2YTdmMTY0MTQ2MGE1MmU4
MjZlNWM5MzdjZmNkODU0ZDM5YmQ0MmUuLjk1YjVhM2Q1ZWNiYjk4ZDNiNDhhZjRkMmE0Yjk3MDcz
MTE0ZTNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKQEAgLTM5Myw2ICszOTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZh
bERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZToKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlNzg5MmFjNmMyMGU5Njc1OGI0MzMz
ZGQ2ZjUzYzU1ZGZiZTJjYWExLi5mNTE0YWQxNTk3Yjg1MmI2NjVhODQyOGUxYWYxZTU4NDg0MTIx
Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC0xMDE4LDYgKzEwMTgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0
aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21w
aWxlUHV0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEF0
b21pY3NBZGQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoKICAgICAgICAgY2FzZSBBdG9taWNz
Q29tcGFyZUV4Y2hhbmdlOgpAQCAtMzk0Myw2ICszOTQ2LDI1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5
LCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkK
KyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgIGlmIChtX25vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSkgeworICAgICAgICAgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJp
bmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgICAgIC8vIHRvIGNo
ZWNrIGl0IGhlcmUuCisgICAgICAgICAgICBjYWNoZWRQdXRCeUlkKG1fbm9kZSwgYmFzZSwgdmFs
dWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPnBy
aXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5h
bWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLAorICAgICAgICAgICAg
ICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9v
dXQuY29uc3RJbnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUF0b21pY3NSZWFk
TW9kaWZ5V3JpdGUoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKQEAg
LTQxODksMTQgKzQyMTEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoTm9kZSogbm9k
ZSwgTFZhbHVlIGJhc2UsIExWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVG
aWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKICAgICB7Ci0gICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Ci0KLSAgICAgICAgTm9kZSogbm9kZSA9IG1f
bm9kZTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKTsKKyAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCiAgICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKQEAgLTQyMTIsNyArNDIzMCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgIEVD
TUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKICAgICAgICAgCiAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC00MjI3LDEx
ICs0MjQ0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVyIGNhbGwg
SUNzIGdlbmVyYXRlZCBieSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAgICAgICAg
ICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBh
cmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBhdXRvIHB1dEtpbmQgPSBu
b2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgfHwgbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFt
ZSA/IERpcmVjdCA6IE5vdERpcmVjdDsKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVn
aXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5
SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5v
bmUpOworICAgICAgICAgICAgICAgICAgICBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKTsK
IAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAt
NDI1OSw2ICs0Mjc3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisgICAgewor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAg
IE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIGJhc2UsIHZhbHVlLCBub2RlLT5l
Y21hTW9kZSgpLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOworICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBpbGVHZXRCdXR0ZXJmbHkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9EU0wucmIKaW5kZXggZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1
OWYxNS4uNzMxNzEwMDk2Y2YzZTI0OThhZTQ1ZGRhMjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUg
RFNMCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRL
aW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFn
cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMWUx
Y2YwNmUzMTU3ZDA1MTQ5NjUyNTBlNGJjMTNiYjEwMWVkZGMyZi4uOWFkY2Y4OGU5ZWQ0NDMyZmE2
YWRlZTE2NjEyMTY1YjExOWI5ZDBhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
NDI1LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92
YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0
dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg2LDYgKzU4Nyw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJl
Y3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9k
ZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05MDEsNyAr
OTAzLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRv
IG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAg
ICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAg
ICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJU
YWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90
SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9u
SnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAg
IFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5m
by5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRp
b25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFi
bGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAg
ICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFs
UHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhU
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQ
YXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0
aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVy
bmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKaW5kZXggNTA4YWY1MGY2MWViMzE2ZmUzMzM5YTk3ZDUwZWM1NGIxOTU2
Yzc5Ny4uMGRkMjEyMjc0M2VmZDE2YWNhMDNkYTI1MjFjNzlmNmJhMThmYTIxNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCkBAIC0xNjEsNiArMTYxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25l
VGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAg
ICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkK
KyAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0
SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisK
ICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5k
ZXhKdW1wOwpAQCAtNDA2LDcgKzQxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8v
IERldGVybWluZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNv
ZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmll
bGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZp
ZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQg
ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKQEAgLTYwNSw2
ICs2MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ag
PSBPcFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJf
c2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02ODYsNiArNjk2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9w
ZXJ0eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcAppbmRleCBkOGY5NWJiMGY3Y2ZjODk4MmIzOGU4NzBlMWJiYjdhMWQ0OTBk
MmEwLi5hYjZiMzc1NDFmMTljN2Y4ZGJiNzFlNGEyODNhNTViYzQwZDA3ZGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cApAQCAtMTM2LDExICsxMzYsMTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBl
Y21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwg
UHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5
SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJp
dmF0ZUZpZWxkUHV0S2luZChwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIG1fc3R1YkluZm8t
PnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2
b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93
UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0
S2luZC5pc05vbmUoKSkgewogICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAg
ICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAg
ICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsK
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMjljMmQyZTZkMzI4ZGE5Y2IzNzYxMTVkOTkyZWEyYTJj
NTBjNTk5NC4uNDIxYzQ2ZGViZDdhZmQwMzRjNjE4MzVjOWI1ODkzOTY0NWRlNmM0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQu
aCIKIApAQCAtMTMxLDEyICsxMzAsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
KCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBt
X3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAg
ICAgICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQoUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgp
KQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpT
VmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtp
bmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwog
ICAgIApAQCAtMTQ1LDcgKzE0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUg
bV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5k
IG1fcHJpdmF0ZUZpZWxkUHV0S2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9y
IDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKaW5kZXggMmY3NmRiMDA2OTIxMThhZjg1MmU3MDYyOTUwMjc0Mjk5ODVh
Y2ZiMi4uNDVmN2YwYzkxOGNlYjNiZGM3NDdlNDNlZGNlMzI2ZmExMDJlNjZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZ
U19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkK
IH0KIAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9w
UHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFN
b2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsK
LSAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6
c3RyaWN0KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5k
IEpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6Tm9uZTsKKyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgp
OwogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
SklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxE
aXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRl
RmllbGRQdXRLaW5kPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0g
ICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVy
biBvcC5tX3B1dEtpbmQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMWZhNjliYTJiMjY0MGRhMDk5YWE4
N2U3NmQ3MDk4NjVlMDIyYmY0NC4uNTg0OGJlOTFkZmQ4YzVkNzc3MzhhMjM0ZmVjOGU3ZDJjMTJk
ZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0xMTA1LDcgKzExMDUsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVj
bWFNb2RlKTsKIH0KIAotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTExMTksNiArMTEx
OCwxMzIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2Jh
bE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZv
LCBlY21hTW9kZSk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVs
ZFB1dEtpbmQgcHV0S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIE9wdGltaXphdGlvblJl
c3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXpl
ZDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVy
Ojppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1
YnNjcmlwdC5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRl
Y29kZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2Vlbikg
eworICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3Bl
cnR5TmFtZSkgeworICAgICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeVZhbFdpdGhD
YWNoZWRJZDxPcFB1dFByaXZhdGVOYW1lPih2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgRGlyZWN0LCBieVZhbEluZm8tPmNhY2hl
ZElkKTsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0
aW9uUmVzdWx0OjpPcHRpbWl6ZWQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gU2VlbSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4K
KyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVz
dWx0OjpHaXZlVXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8t
PnNlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0g
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVz
dWx0OjpTZWVuT25jZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBP
cHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0
aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cg
cGF0aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3
ZQorICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAx
MCBpdGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBv
YnNlcnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAg
ICAgICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBH
aXZlVXAuCisgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
OworICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVz
dWx0OjpHaXZlVXApIHsKKyAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisg
ICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwg
cHV0S2luZC5pc0RlZmluZSgpID8gIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6
IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgfQorCisgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgIAorICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2Vk
IHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJl
IGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1
ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtp
bmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAg
ICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZh
dGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8g
UHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwg
c2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2Rl
CisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVj
dCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9i
amVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbElu
Zm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
VmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRT
dWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXko
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
CisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkg
YmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3Mg
bWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmlj
dE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAg
ICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CmluZGV4IDM4Y2Q5ZmQ5YzE0Y2ZkNzM4ZGQ1NTA1ZWM0NmEyNzM2MzY5MGM5Y2MuLmNiMWRlZDI1
YTIzMjExODg4Y2RiMmQxOWNlM2M5ZTE0NTAyYWFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkK
IAogI2luY2x1ZGUgIkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxk
UHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBA
IC0xOTMsMTAgKzE5NCwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERl
ZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZQogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5U
RVJOQUw7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJ
bmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1l
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5U
eXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGMyMWMwZTYxYmViMTUzOGI2
MGFlMmFhMzE3MGM1NTJhMjNmMzZiZmUuLjQzMjgxYWU2ODAxYjU3ZTdiYjhiYzU5YjM5NmUyMTI0
MzM1ZjU0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRM
YW1iZGEuaD4KQEAgLTMxNiw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1p
dFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBl
Y21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUp
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRl
IG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgog
ICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBl
ZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAg
ICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRl
Y29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUp
OworICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAg
IGlmIChpc0RpcmVjdCkKQEAgLTM2OSw2ICszNzAsNDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFMKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwogfQogCit2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2
YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAg
IEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbygpOworCisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0
aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7Cisg
ICAgCisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mby5hcHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2Rl
SW5kZXgsIGZhc3RQYXRoSm1wLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtp
bmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
ICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwg
YmFzZUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5
LCBwcm9wZXJ0eUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Zh
bHVlLCB2YWx1ZUdQUik7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVz
dGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFk
ZHJlc3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dEdldHRlckJ5SWQ+KCk7CkBAIC03MDAsNyArNzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAot
ICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2
YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzU4
LDcgKzE0MDAsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVj
bWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29k
ZSkpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2
YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMTQ2OSw3ICsxNTExLDcg
QEAgdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbERp
cmVjdD4oY29uc3QgQ29uY3VycmVudEpTTG8KIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbElu
Zm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNo
ZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0g
RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtp
bmQgPT0gTm90RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAg
QVNTRVJUKChwdXRLaW5kID09IERpcmVjdCAmJiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92
YWxfZGlyZWN0IHx8IE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfcHJpdmF0ZV9uYW1lKSkgfHwgKHB1
dEtpbmQgPT0gTm90RGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogCkBAIC0xNDkxLDE4
ICsxNTMzLDMxIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElk
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgfQogICAgIGdlbi5maW5h
bGl6ZShwYXRjaEJ1ZmZlciwgcGF0Y2hCdWZmZXIpOwogCisgICAgYXV0byBvcGNvZGVOYW1lID0g
W10oKSBjb25zdGV4cHIgeworICAgICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9ieV92
YWxfZGlyZWN0KQorICAgICAgICAgICAgcmV0dXJuICJwdXRfYnlfdmFsX2RpcmVjdCI7CisgICAg
ICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgICAg
IHJldHVybiAicHV0X3ByaXZhdGVfbmFtZSI7CisgICAgICAgIHJldHVybiAicHV0X2J5X3ZhbCI7
CisgICAgfTsKKwogICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZP
Ul9TVFVCKAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5l
UHRyVGFnLAotICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3Bl
cnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0g
RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRh
KCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgp
KTsKKyAgICAgICAgIkJhc2VsaW5lICVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBz
dHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgb3Bjb2RlTmFtZSgpLCBwcm9wZXJ0eU5hbWUu
dWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0
dXJuQWRkcmVzcy52YWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJ
bmZvKCk7CiAKKyAgICBhdXRvIGdlbmVyaWNGdW5jdGlvbiA9IHB1dEtpbmQgPT0gRGlyZWN0ID8g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
OworICAgIGlmIGNvbnN0ZXhwciAoT3A6Om9wY29kZUlEID09IG9wX3B1dF9wcml2YXRlX25hbWUp
CisgICAgICAgIGdlbmVyaWNGdW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgp
ID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0
ZU5hbWVHZW5lcmljOworCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihwdXRLaW5kID09IERpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihn
ZW5lcmljRnVuY3Rpb24pKTsKIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBm
cm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAotLy8gc28g
d2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4K
Ky8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0aHJlZSBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4g
YWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENh
Y2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQs
IENhY2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7Cit0ZW1wbGF0ZSB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dFByaXZhdGVOYW1l
PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlm
aWVyKTsKIAogSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDJhNWVjYzc0MjE0
NTUwNDcxNTczYjA5MTk4Y2MxNWViNDk0YmZlZGQuLmVjZWU4NTFmMWVlMGI5Yzk3Mzk3NjRmNTUx
NzkyZmRkMjIyOTYzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzMxLDYgKzMzMSw1MCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZQogfQogCiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKCk7CisKKyAgICBlbWl0TG9hZDIoYmFzZSwg
cmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKKworICAgIFBhdGNoYWJsZUp1
bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBh
dGhKbXApOworCisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENv
bXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5
dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1wLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4o
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxS
ZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFs
SW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5
VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1
dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRo
ID0gbGFiZWwoKTsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7Cisg
ICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVn
cy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0
eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICBlbWl0TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRhZ0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQ
UigpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVO
YW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
YmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0z
MihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9
IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVu
dEluc3RydWN0aW9uKTsKQEAgLTcwOCw3ICs3NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEs
IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2Rl
Lm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRl
RmllbGRQdXRLaW5kOjpub25lKCkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRl
eCBmNjEwYzE5Nzc0NjlkY2Q4YzhlMzA0NjMxY2FjNzQ2YmQ0Mjg0MTNmLi5jOGMyNjE1MjQzYWQ4
YzBhNmRlZGQwZTBlZjM1NDVhNDY3NDg3MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksOSArNTksOSBA
QAogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAi
UHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1
ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZDRkMDkxNmZmMmQ3
NjE0NDA0M2EzOTVkM2U4YTgxODMwNzIwMTQ2YS4uN2JiNjJhMGM0NDRhOTM0MzJhZGVlNWY1Mjlm
ZmYyNDk1NWI1ZjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC0xMTc3LDQ4ICsxMTc3LDEyNiBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChi
YXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9mbGFncy5l
Y21hTW9kZSgpLmlzU3RyaWN0KCk7Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcyA9IGJ5
dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBY2Nlc3MoKTsKKyAgICBib29sIGlzU3RyaWN0
TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgewotICAg
ICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1v
ZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAotICAgIGlmIChzdWJzY3JpcHQu
aXNEb3VibGUoKSkgewotICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKLSAg
ICAgICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7Ci0g
ICAgICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHN1YnNjcmlwdEFzRG91YmxlKTsKLSAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1
YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7Ci0gICAgICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFz
VUludDMyLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJv
dyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwotICAgICAgICAgICAgTExJTlRfRU5E
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlm
IHRvU3RyaW5nIHRocmV3IGFuIGV4Y2VwdGlvbi4KICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2Ny
aXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkodGhyb3dT
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwogCi0gICAgQVNTRVJUKHBy
b3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAg
ICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCks
IHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0
RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChpc1By
aXZhdGVGaWVsZEFjY2VzcykgewotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2ZsYWdz
LmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5l
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgTExJTlRf
RU5EKCk7ICAgIAotICAgICAgICB9Ci0KICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJl
Y3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKICAgICB9CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9w
ZXJ0eSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3ZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtl
eShnbG9iYWxPYmplY3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMg
Y2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBh
bmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9v
bCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RN
b2RlKTsKKyAgICBpZiAoYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJh
c2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChieXRlY29kZS5tX3B1dEtpbmQu
aXNTZXQoKSk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgfQorICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworCisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYg
YmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAg
ICAgICAmJiBzdWJzY3JpcHQuaXNDZWxsKCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9w
ZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJl
KiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xv
dDo6TmV3UHJvcGVydHkpCisgICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJv
dG8oYSwgYikpIHsKKyAgICAgICAgICAgICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9s
eVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRl
Y3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+
cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBT
dHJpbmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBT
dGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7Cisg
ICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5t
X3Byb3BlcnR5LmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0g
YmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJh
c2VDZWxsLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVy
ZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFz
ZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpO
ZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICgh
bmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1
cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbklu
dmFsaWRhdGVkKCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90
byA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxp
emVQcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hh
aW4gJiYgIXNhd1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJl
SUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxv
Y2spOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGlzIGFzc2VydCBoZWxwcyBjYXRjaCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQg
dG8gZGlzYWJsZSBjYWNoaW5nCisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9u
IHRoZW4gc3RvcmUgdG8gYW4gZXhpc3RpbmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25n
CisgICAgICAgICAgICAgICAgLy8gcGF0aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElm
IHdlIHJlaWZ5IGEgbGF6eSBwcm9wZXJ0eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8g
dG8gZGlzYWJsZSBjYWNoaW5nLCB3ZSBtYXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxh
Y2UgSUMgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVz
ZSB0eXBlcyBvZiBzdHJ1Y3R1cmUgdHJhbnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAg
ICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobmV3U3RydWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAg
ICAgICAgICAgbmV3U3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNs
b3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlk
KCk7CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0s
IGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKwogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXgg
NmMzMDhkOWYzZGRlMjViOWZlMWI2OGQ3NzYwZDRlZWUxMWIxYWE4OS4uYTYzNTRmZjlkOGE3ODc4
MWUxOGNiZmU4MzNmM2E5YzFjY2I4Y2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTc2LDYgKzc2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCk7CitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHV0X2dldHRlcl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9zZXR0ZXJfYnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRl
eCBlYmQzNmJhY2VkZDRlMDM4MTQwMTYyOWY5NmExMTY1YTFlN2U5MzY2Li5hNjAyYWJmMDMyODJi
MTIwZDNjNjFjZWY3OTk2MWEyYTA5MDAxZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjE0LDYg
KzYxNCwxMyBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9h
ZEFmdGVyU2xvd1BhdGgpCiAgICAgICAgIGVuZCkKIGVuZAogCittYWNybyB3cml0ZUJhcnJpZXJP
bk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgY2VsbEZpZWxkTmFtZSwgcmVsb2FkQWZ0ZXJT
bG93UGF0aCkKKyAgICBnZXQoY2VsbEZpZWxkTmFtZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkK
KyAgICB3cml0ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKHQyLCByZWxvYWRBZnRlclNsb3dQYXRo
KQorLndyaXRlQmFycmllckRvbmU6CitlbmQKKwogbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5k
KHNpemUsIGdldCwgY2VsbEZpZWxkTmFtZSkKICAgICBnZXQoY2VsbEZpZWxkTmFtZSwgdDEpCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQyLCAu
d3JpdGVCYXJyaWVyRG9uZSkKQEAgLTE2OTMsNiArMTcwMCw0OCBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpcwogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9w
dXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUs
IGdldCwgbV9iYXNlLCBtX3ZhbHVlKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0UHJpdmF0
ZU5hbWVTbG93KQorICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xv
dykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0
UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0Mywg
dDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZl
OgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJl
IElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6
TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5v
dFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQor
ICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1h
Y3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRh
dGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1f
YmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQx
LCBDZWxsVGFnLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGVuZCkKKworLm9wUHV0
Tm90VHJhbnNpdGlvbjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQw
LCB3aGljaCBob2xkcyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIsIHQzKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0
ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXQodDEsIHQwLCB0MiwgdDMpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2
YXRlTmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZh
dGVfbmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDZmZTE3MzA3OGNhYzNjMWNjMTkx
NDgwNjM2ZDI3N2ViYmZhYTM1NDMuLmZhZmY3NDIzZmExNTVjYTUyOGM3NWQ4YzQ5YTZmZmM0YjM4
YThmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0xNzM0LDYgKzE3MzQsNDkgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cp
CisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
KHNpemUsIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0
MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJ
RFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1
dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVT
bG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3Qg
YmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFk
YXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1
cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3Rv
cmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVy
YW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxv
YWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMg
UmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RU
cmFuc2l0aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdo
aWNoIGhvbGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1f
YmFzZSwgbV92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAg
IGRpc3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQ
dXRLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1
dEtpbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMTIzNzdhOWIxM2U5MWJmZjNjYTA3MmQyZDM3OTA2Zjll
NmNiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cml2YXRlRmllbGRQdXRLaW5kLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0
OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgorCisjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIFByaXZhdGVGaWVsZFB1dEtp
bmQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoaXNTZXQoKSkKKyAg
ICAgICAgb3V0LnByaW50KCJTZXQiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiRGVm
aW5lIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiY2RjNGNh
MzA0OGVjN2RhMDFkYmEwZDBhYWZjODRiYjU2NzUyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgUHJpbnRTdHJl
YW07Cit9OworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFByaXZhdGVGaWVsZFB1dEtpbmQg
eworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBOb25lID0gMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ4X3QgU2V0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgRGVm
aW5lID0gMjsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0
S2luZCBmcm9tQnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQo
Ynl0ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgbm9uZSgp
IHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoTm9uZSk7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIFByaXZhdGVGaWVsZFB1dEtpbmQgc2V0KCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2lu
ZChTZXQpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGRlZmlu
ZSgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoRGVmaW5lKTsgfQorCisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gTm9uZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0g
U2V0OyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVmaW5lKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZSA9PSBEZWZpbmU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVh
bSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5k
KHVpbnQ4X3QgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3ZhbHVlID09IE5vbmUgfHwgbV92YWx1ZSA9PSBTZXQgfHwgbV92YWx1ZSA9PSBE
ZWZpbmUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCA3MDhiNWFkMzVhMTMwZWIwYmQxYmZhNzRjNTlmNTk5OTY4NDhhZTE5
Li5jZGY5YzI3MDc2MjFiZDcyMzQ3OTAxOTU3ZDUzOWMxY2Q4Nzk5NmY1IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDIwLTA4LTExICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAg
ICBbSlNDXVtFU05leHRdIENyZWF0ZSBhIG5ldyBvcGNvZGUgdG8gaGFuZGxlIHByaXZhdGUgZmll
bGRzIHN0b3JlL2RlZmluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEzMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRqdXN0aW5nIHRlc3RzIHRoYXQgZW1pdCBgZ2V0X3ByaXZhdGVfbmFtZWAgdG8g
YXZvaWQgZXhlY3V0aW9uIGluCisgICAgICAgIEZUTC9ERkcuCisKKyAgICAgICAgKiBzdHJlc3Mv
ZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnkt
aWQtZGlyZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1j
b25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zm
c2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmlj
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRl
ZmluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxp
ZC1zdG9yZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52
YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1z
eW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgt
ZGlmZmVyZW50LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA4LTA3ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ0V4cCBzdGlja3kgbm90IG1h
dGNoaW5nIGFsdGVybmF0ZXMgY29ycmVjdGx5LCBpZ25vcmluZyBsYXN0SW5kZXggcmVxdWlyZW1l
bnQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNr
LWJhcnJpZXItaW5zZXJ0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5h
bWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY1ZTYzMDU1NzhkZWY2
OGI0ZTI2ZmZmOGU3MWNmOWUwYjk0OGZjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzCkBAIC0w
LDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9
dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24oYSwgZSkgeworICAgICAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBs
ZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6
ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQor
fQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOwor
CisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKwor
ICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAg
ICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisg
ICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOwor
ICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRG
aWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVs
ZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25v
REZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KworbGV0IG9sZE9iamVjdCA9IG5ldyBDOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAg
aWYgKGkgPCA1MDAwKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGMuc2V0Rmll
bGQoaSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGkgPT0gNTAwMCkKKyAgICAgICAgICAg
IGdjKCk7CisgICAgICAgIG9sZE9iamVjdC5zZXRGaWVsZCh7cHJvcDogaX0pOworICAgICAgICBl
ZGVuR0MoKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShvbGRPYmplY3QuZ2V0RmllbGQoKS5w
cm9wLCBpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQt
cHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMgYi9KU1Rlc3RzL3N0
cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSAr
ICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNl
cHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxk
ID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIs
ICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0
aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhp
c1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAg
dGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
IH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYy5z
ZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0
RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zm
c2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIwMmZhYTg5MWFlNDE0MDFlZWFjZmRhZWQ4MzVmNGU0MmRmNGU1
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNv
bnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsNTcgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Zz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVyYXRp
b25zID0gMTAwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZhbHNlOworbGV0IGNvbnN0
cnVjdERpZmZlcmVudCA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0
KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoY29uc3RydWN0RGlmZmVyZW50KQorICAg
ICAgICAgICAgdGhpcy5mb28gPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBt
ZXRob2Qoaiwgb3RoZXIpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBsZXQgb2JqID0g
dGhpczsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwg
aXRlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAgICBpZiAoaiAlIDIpIHsK
KyAgICAgICAgICAgIG90aGVyLmZvbyA9IGo7CisgICAgICAgICAgICBvYmogPSBvdGhlcjsKKyAg
ICAgICAgfQorICAgICAgICBvYmouI2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJv
dG90eXBlLm1ldGhvZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhD
LnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xl
dCBvdGhlckMgPSBuZXcgQygpOworCitjb25zdHJ1Y3REaWZmZXJlbnQgPSB0cnVlOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IDMwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5t
ZXRob2QoaSwgb3RoZXJDKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7
Cit9CisKK3RyaWdnZXJDb21waWxhdGlvbiA9IHRydWUKK2xldCBjID0gbmV3IEMoKTsKK2MubWV0
aG9kKDAsIG90aGVyQyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9u
cyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3Rh
bnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzcyMGVjODA0YTk0ZjcxZTM1OGVhN2FhZTZhNmZlOGRlZTI1ODU1MgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1w
dXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1h
bGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVl
IiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cisg
ICAgfQorfQorCitsZXQgaXRlcmF0aW9ucyA9IDEwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlv
biA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIG1ldGhvZCgpIHsK
KyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBp
bGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7CisgICAgICAg
IHRoaXMuI2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykg
eworICAgIGMubWV0aG9kKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDAp
OworfQorCit0cmlnZ2VyQ29tcGlsYXRpb24gPSB0cnVlCitjLm1ldGhvZCgpOworYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ2YzI5OWM2NjI3MGJhYmNhM2Qw
MDdiN2E3ODMwOTc3Mjc5NGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAo
YSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGNsYXNzRGVjbGFyYXRpb24oZHluYW1pY1Byb3BlcnR5KSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgIAorICAgICAgICBpbml0KCkgeworICAgICAg
ICAgICAgdGhpc1tkeW5hbWljUHJvcGVydHldID0gZHluYW1pY1Byb3BlcnR5OworICAgICAgICB9
CisKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5z
ZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZH
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQ2xhc3MgPSBjbGFzc0RlY2xh
cmF0aW9uKCdwcm9wZXJ0eScgKyBpKTsKKyAgICBsZXQgYyA9IG5ldyBDbGFzcygpOworICAgIGMu
c2V0RmllbGQoJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rl
c3QnKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1p
bnZhbGlkLWRlZmluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxp
ZC1kZWZpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1OThlNzAxOWQzNzRkNjBhYTlkN2NkYTljZjU0MmI3
MTY3ZjNiNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtaW52YWxpZC1kZWZpbmUuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUp
IHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzog
ZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlv
bjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
dGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBi
dXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRP
dmVycmlkZVJldHVybiA9IGZhbHNlOworbGV0IG9iajsKKworY2xhc3MgQiB7CisgICAgY29uc3Ry
dWN0b3IoKSB7CisgICAgICAgIGlmIChzaG91bGRPdmVycmlkZVJldHVybikKKyAgICAgICAgICAg
IHJldHVybiBvYmo7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgQyBl
eHRlbmRzIEIgeworICAjZmllbGQgPSAndGVzdCc7CisKKyAgZ2V0RmllbGQoKSB7CisgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgIH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9J
bmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQp
Oworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAgICBzaG91bGRPdmVycmlkZVJldHVy
biA9IHRydWU7CisgICAgICBvYmogPSB7fTsKKyAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAg
IGFzc2VydC5zYW1lVmFsdWUoQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChvYmopLCAndGVzdCcp
OworICAgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICAg
IG5ldyBDKCk7CisgICAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICAgIGxldCBvYmogPSB7fTsKKyAg
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgp
LCAndGVzdCcpOworICAgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4gewor
ICAgICAgICAgIGMuZ2V0RmllbGQuY2FsbChvYmopOworICAgICAgfSk7CisgIH0KK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MzQ3Y2VhNjAwMDVhOWI1Zjg2OGEwYjUzYmYyMWQ3NWMyNGZiYjA4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpz
CkBAIC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVk
VGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09
IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdv
dDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwg
ZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNl
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQg
ZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVu
Y3Rpb24gZm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAg
ICAjZm9vOworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAg
dGhpcy4jZm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lu
bGluZShmb28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkg
PiAxMDAwKSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC5zaG91bGRUaHJv
dyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9IGVsc2Ugewor
ICAgIGZvbygpOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMzMTRmYTllNzA0OWYxYjgwYjAyZmMwYTcxOTU0
N2U3YTIxZGI5MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCww
ICsxLDY5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7Cisg
ICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1
bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAg
ICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0
IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhj
ZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAg
ICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9
CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAg
bm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBD
ID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygp
OworCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKK2MyLnNldEZpZWxkKCdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0Rmll
bGQoKSwgJ2ZvbycpOworCitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgYy5zZXRGaWVsZC5jYWxsKGMyLCAndGVzdCcpOworfSk7CisKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYzIuc2V0RmllbGQuY2FsbChjLCAn
dGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtb3NyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTE2OTVhMWFkZTM3NjljNjE0ZGRjOTMwMTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCkBAIC0wLDAg
KzEsNDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlz
LmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisgICAgICAg
ICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisK
KyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAg
ICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25v
SW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0
RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2Zv
bycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2NmYzUzNjRjYTllMDJjZTk1MjNiYWM0MTVjMTgwMTQ2ZTE1Njg5ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0
aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUp
IHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisK
K2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAg
ICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAg
ICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAg
dGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
Oworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2Zvbycg
KyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30K
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhMzI5N2JlZDgyZDdjMGM3ZTUyZDU1YTc1ZTVh
YzIxMTgxYjdjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitjbGFz
cyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAg
IHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxk
KTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1p
ZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZl
cmVudC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMzdkODE3ZWRlMTRhMjAzNWYzNWE2ODhi
YTQxNWRhMTVmZDM3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKQEAgLTAsMCArMSwzOSBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQor
fQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICAjZmllbGQ7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMu
I2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0
aW9uKTsKK2xldCBDMSA9IGNsYXNzRGVjbGFyYXRpb24oKTsKK2xldCBDMiA9IGNsYXNzRGVjbGFy
YXRpb24oKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMg
PSBpICUgMiA/IG5ldyBDMSA6IG5ldyBDMjsKKyAgICBjLnNldEZpZWxkKCd0ZXN0JyArIGkpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcgKyBpKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406597</attachid>
            <date>2020-08-14 09:25:06 -0700</date>
            <delta_ts>2020-08-17 10:21:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200814132502.patch</filename>
            <type>text/plain</type>
            <size>145785</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZmY3ZjI2NjQxYjk4ZjZkOTYzOWNiYTg2NWQzNDU4NDU2Njk3NDJkLi5iMTgzNThiMGZkNzIzYjk3
ZGUyODEwZjNhZmRhMTgzNTA3YjU3YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjQgQEAKKzIwMjAtMDgtMTQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuCisgICAgICAgIEl0IGlz
IGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2YXRlTmFtZWAgdGhhdCBoYW5kbGVz
IGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZhdGVfbmFtZWAuIFRoZSBzdHJhdGVn
eSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2YXRlX25hbWVgIGlzIHZlcnkgc2lt
aWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAgICAgICAgYHB1dF9ieV92YWxbX2Rp
cmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBhcyBgW011bHRpXVB1dEJ5T2Zmc2V0
YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNl
bGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0
aGUgYFB1dFByaXZhdGVOYW1lYCBub2RlLiBXZSBnZXQgYW5vdGhlcgorICAgICAgICBjaGFuZ2Nl
IHRvIHRyYW5zZm9ybSBgUHV0UHJpdmF0ZU5hbWVgIHdpdGggYENoYWNoZWFibGVJZGVudGlmaWVy
c2AgaW50bworICAgICAgICBgUHV0QnlPZmZzZXRgIGlmIHdlIGNhbiBwcm92ZSBpdHMgc3RydWN0
dXJlIHNldCBhdCBjb25zdGFudCBmb2xkaW5nCisgICAgICAgIHBoYXNlLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgor
ICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0
Pik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xk
aW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9s
ZGluZ1BoYXNlOjp0cnlGb2xkQXNQdXRCeU9mZnNldCk6CisgICAgICAgICogZGZnL0RGR0RvZXNH
Qy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4
dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZl
cnRUb1B1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0
aVB1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjplY21hTW9kZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzUHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5m
bzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVz
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6
QnlWYWxDb21waWxhdGlvbkluZm86OkJ5VmFsQ29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlk
R2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4pOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVGaWVsZFB1dEtpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZFB1
dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlPE9w
UHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlRmll
bGRBY2Nlc3NLaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRQ
cml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFs
V2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0
ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpQcml2YXRl
RmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6
c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2
YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0
S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDgtMTEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9j
a0ZvcigpIG5lZ2xlY3RlZCB0byBzZXQgdGhlIGV4Y2VwdGlvbiBwb2ludGVyIHJlc3VsdCBpbiBv
bmUgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhODYyODhiMmU3
NzcwZTg4MTdhMGU4ZGIyYjQ4ZDcyNjM3NzhkYzE1Li45ZmQ0OTVjM2RkMDY5OTA3YTVhZTc1OGYw
YTFkMmY4ZTNhMWYzN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
NDMsNyArNTQzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRp
b24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVj
dHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAgLTk2OSw2ICs5NjgsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRp
bWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25zTGlzdC5oCiAgICAgcnVudGltZS9QYXJz
ZUludC5oCisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKICAgICBydW50aW1lL1By
aXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgx
OTdmNmI2MGM4ZTNmYTViYjBlNzg3YjQ2YWZlNGNlZmY0YmZlNDEuLjJjMzk2YTk1YTdiMzRjNDkx
NmUwZGFmYWEzOTg0NWQ5YWIyZmYzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJ
VC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRC
ODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2NzZDNkU4MjM0
NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0Iy
QjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMw
Q0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNjQsNiArMTI2Myw3IEBA
CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAw
MDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVn
aXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFERDE0MzBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAw
NkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCODY5MDAy
NEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RG
NTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2
OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdG
MCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZD
NTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDEzNyw4ICs0MTM3LDYgQEAKIAkJ
ODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZ
YXJyUGF0dGVybi5jcHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGgg
PSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZD
NkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1
dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTcyMzQ2
NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0
QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQz
MjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRo
ID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTU4LDYgKzQxNTYsOCBAQAogCQk4NkFERDE0NDBG
RERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBU
aWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVk
TU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAwMjRCODlF
QTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVGaWVsZFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDIy
NEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3Nl
bWJsZXJNSVBTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1i
bGVyTUlQUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU3Nyw2ICs3NTc3LDgg
QEAKIAkJCQkzN0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLywKIAkJCQlD
RTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFn
ZW50LmNwcCAqLywKIAkJCQlDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZp
bGVDcmVhdGluZ0Z1enplckFnZW50LmggKi8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1
IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4
N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAw
Q0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJB
IC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5
QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKQEAgLTg0NDgsOCArODQ1MCw2IEBACiAJCQkJ
MEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkz
QjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNC
NEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3
MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIz
NDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1
RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3
MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC0xMDE3MCw2ICsxMDE3MCw3IEBACiAJCQkJ
Q0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFBy
ZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2
MUUwMDEwM0E2OSAvKiBQcmludGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkI4NjkwMTI0Qjg5
RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDIxMCw3ICsxMDIxMSw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAw
MzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENB
N0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNC
NEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJv
cGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBjMzEwYjlhNGNkZmQ2MWQ0NzgyZWY2NjlkM2E5YjJkNWNlMzEwMmY2Li5kYmQ2NTFiZmRjZjk0
ZmUyOTQ4Zjk4ODU1YjE3NmFkNjFmNjdlMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5
dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAK
IGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTM3LDYgKzkzNiw3IEBAIHJ1bnRpbWUv
T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1lL09w
ZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKK3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAK
IHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVy
LmNwcAogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCA1ODc4NDVmZDUwZTMyZWJmYmVl
NmRiZDhkNmVmMTA1OTRhYjNkMWM1Li45NmUzZWRjYWFjNDE3MDBiODZhYmRjZGVlNGY4NTIzMjgz
MDJkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKQEAgLTQ2LDEwICs0NiwxMCBAQCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZv
LAogICAgIDpSZXN1bHRUeXBlLAogICAgIDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVs
ZFB1dEtpbmQsCiAgICAgOlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9m
ZnNldCwKICAgICA6UHV0QnlJZEZsYWdzLAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNv
bHZlVHlwZSwKICAgICA6U3RydWN0dXJlLAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3Myw2ICs1
NzMsMjAgQEAgb3AgOmdldF9wcml2YXRlX25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJh
cnJpZXJbSlNDZWxsXSwKICAgICB9CiAKK29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6
IHsKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBw
dXRLaW5kOiBQcml2YXRlRmllbGRQdXRLaW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAg
ICAgICAgb2xkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3Jp
dGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5l
d1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAg
IGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTk4LDcgKzYxMiw3
IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNt
YU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA1ZjU4NjU4YTJlNmIxZTQ0NmQ4M2EyMTAwMDI4
NTNlYjIzOGNjNDFiLi42OTI4ZjdmODg2OWM0ZWYzYmE1NThhZWU1NTM3NmExMzYxNzU5MmRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAKQEAgLTIyNiw2ICsyMjYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleElt
cGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMo
T3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9w
R2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFz
ZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BP
dmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAg
VVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC0zOTQsNiArMzk1LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0Ogor
ICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9m
aWVsZDoKICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA2YjVhOTAyZDhhM2Q3N2Q0MjY5NTkwZTUzMDg5MWFjMjZkNzIx
MWYwLi5mZDRmNjQwODg2ZjI4MGU5Y2MwNTg0MmVlZWMzYzZhNzhlZDIzZmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTQyLDYgKzU0Miw3
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAg
ICAgICBMSU5LKE9wUHV0QnlWYWwpCiAgICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAg
ICAgICAgTElOSyhPcFB1dFByaXZhdGVOYW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkK
ICAgICAgICAgTElOSyhPcE5ld0FycmF5V2l0aFNpemUpCkBAIC0xMTM2LDYgKzExMzcsMjUgQEAg
dm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01h
cmtlZChvbGRTdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAo
IW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1f
cHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChv
bGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3
U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0
cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
bmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
MzAyLDYgKzEzMjIsMjIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMoKQogICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAg
ICAgICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAg
ICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAg
ICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAm
JiAoIXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAg
ICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJD
bGVhcmluZyBMTEludCBwdXRfcHJpdmF0ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOwor
ICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwog
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0u
aGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9j
YWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgy
YmY2YjhhMGFhZTMuLmUwNWEyNTY0OGExM2IwNTk3MmY2NjRjMzdkZTA4Y2QzYzg5NDk1OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMjksOSArMjksOSBAQAogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJPcGNv
ZGVTaXplLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5j
bHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRl
ICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5o
IgpAQCAtMjU4LDQ2ICsyNTgsNiBAQCBzdHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsK
ICAgICB9CiB9OwogCi10ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxQdXRC
eVZhbEZsYWdzLCBzaXplPiB7Ci0gICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVC
eVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKLQotICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBi
b29sZWFucyBhbmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgotICAgIC8vICAgICAgICAgIGlz
U3RyaWN0Ci0gICAgLy8gICAgICAgICAgICAgdgotICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlz
RGlyZWN0Ci0gICAgLy8gICAgICAgICAgIF4KLSAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIHswID0gTm9uZSwgMSA9IFB1dCwgMiA9IENyZWF0ZSB9Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0
cmljdEJpdCA9IDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nl
c3NLaW5kTWFzayA9IDEyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZFNoaWZ0ID0gMjsKLQotICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxh
Z3MpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVGFy
Z2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi0gICAgewotICAgICAgICBhdXRv
IGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7Ci0gICAg
ICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpOwotICAgICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOwotICAgICAg
ICByZXR1cm4gKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NL
aW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFB1dEJ5VmFsRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKLSAgICB7Ci0gICAgICAg
IGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsK
LSAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJp
Y3RCaXQpOwotICAgICAgICBhdXRvIGFjY2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmlj
dCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICAgICAgcmV0
dXJuIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lID8KLSAgICAgICAgICAg
IGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5
VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSkgOgotICAgICAgICAgICAgYWNjZXNzID09IFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVG
aWVsZChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQo
ZWNtYU1vZGUpOwotICAgIH0KLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUg
c2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9
IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1Ymxp
YyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNl
ID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsKQEAgLTQyNyw0ICszODcs
MjQgQEAgc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwg
c2l6ZT4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBG
aXRzPFByaXZhdGVGaWVsZFB1dEtpbmQsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGlj
IGJvb2wgY2hlY2soUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OmNoZWNrKHB1dE1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVydChQcml2YXRlRmllbGRQdXRLaW5kIHB1
dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChwdXRNb2RlLnZhbHVl
KCkpOworICAgIH0KKworICAgIHN0YXRpYyBQcml2YXRlRmllbGRQdXRLaW5kIGNvbnZlcnQodHlw
ZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBy
aXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKEJhc2U6OmNvbnZlcnQocHV0TW9kZSkpOworICAg
IH0KK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0MGE5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UHV0QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0gICAg
Q29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0gICAg
ICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIpOwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVG
aWVsZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7
Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgIG91dC5wcmludChj
b21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFiMzZjNjFjZTMwMmJmOWMyMzgyNTZhNzA1Njg3
NjY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkVDTUFNb2RlLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDog
dWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBQdXQsCi0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3Mg
UHV0QnlWYWxGbGFncyB7Ci1wdWJsaWM6Ci0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZs
YWdzIGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRC
eVZhbEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0
X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcg
aWYgdGhlCi0gICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAg
IH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2
YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlW
YWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9
Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZp
ZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxh
Z3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAg
Ym9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9k
ZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmU7IH0KLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
OlB1dDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9
Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0
LCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAg
ICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBF
Q01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2VzcykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUg
bV9lY21hTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsK
LQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6UHV0QnlWYWxGbGFncyk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCAyMTVkNmI3ZTNjYTI5YWZkYmVjMGE4NDQwYTM1NzhiYjU5MDMyYzI2Li42ZWNiODk4
OTI2YTZjYTA2MDA4MTFhOTc3YjJiMTRmMzlkMWEwZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
NDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgog
I2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29k
ZUJsb2NrLmgiCkBAIC0yNzEyLDcgKzI3MTMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
LSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwg
UHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFs
RGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzM2LDEzICsyNzM3LDEzIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNl
LCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5l
UHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxk
KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVy
biB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRl
RmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJv
cGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1v
ZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHks
IHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZjRhODI3ODkyZWU3ODlhNmIxNGJjMGU0ZDVjMDY4
YWUzNTI1ZDllMy4uN2YxYWUzNDcyZGYwYjkwNjU4MGJhODQ1MmUxNGI0NjY3OWMzNGI1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtNDAxOCwxNiArNDAxOCwyMyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgUHV0UHJp
dmF0ZU5hbWU6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAg
IGNhc2UgUHV0QnlJZERpcmVjdDogeworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRQcml2
YXRlTmFtZSAmJiAhbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICBj
bG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNE
aXJlY3QgPSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgfHwgbm9kZS0+b3AoKSA9PSBQdXRQ
cml2YXRlTmFtZTsKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0
dXJlLnRvU3RydWN0dXJlU2V0KCksCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERp
cmVjdCk7CisgICAgICAgICAgICAgICAgaXNEaXJlY3QpOwogCiAgICAgICAgICAgICBib29sIGFs
bEdvb2QgPSB0cnVlOwogICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGFj
NDc3NTg0YjQ4NzA1ZTczMTE0N2Y4ZGNmMGRmNzc0MTg0YWRiMzEuLjY0M2ZhMDNlMzE2ZWY1NWM2
NzVhMmE0NjA2OGJhYWUyYjhlOGM2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MCw5ICs3MCw5IEBACiAjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
UHJlY2lzZUp1bXBUYXJnZXRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKLSNp
bmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5o
IgpAQCAtMjUyLDYgKzI1Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRl
eCBvc3JFeGl0SW5kZXgsIEVDTUFNb2RlKTsKIAorICAgIHZvaWQgaGFuZGxlUHV0UHJpdmF0ZU5h
bWUoCisgICAgICAgIE5vZGUqIGJhc2UsIE5vZGUqIHByb3BlcnR5LCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJ
ZFN0YXR1cyYsIFByaXZhdGVGaWVsZFB1dEtpbmQpOworCiAgICAgdm9pZCBoYW5kbGVEZWxldGVC
eUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3Rh
dHVzLCBFQ01BTW9kZSk7CiAgICAgCkBAIC0xMjY3LDE4ICsxMjcwLDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFNb2RlIGVjbWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2RlKQot
ewotICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdB
WVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxE
aXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUo
KTsKLX0KLQogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJsZUJs
b2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJ
bmRleCk7CkBAIC01MDAzLDYgKzQ5OTQsMTMyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgfSB9CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFBy
aXZhdGVOYW1lKAorICAgIE5vZGUqIGJhc2UsIE5vZGUqIHByb3BlcnR5LCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVl
LAorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKK3sKKyAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNT
aW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VB
Y2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKQor
ICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICBhZGRUb0dyYXBo
KFB1dFByaXZhdGVOYW1lLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmllbGRQ
dXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAocHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgeworICAgICAg
ICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxz
KCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5n
KCkKKyAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6
Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2
YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGgu
Y29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGlj
ZUlubGluZWRQdXRCeUlkKCk7CisgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJ
ZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQdXRC
eUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7Cisg
ICAgCisgICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRCeUlk
U3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgOiB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQo
KSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9t
dWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFudHMgPSBwdXRC
eUlkU3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOworICAgICAgICBhZGRUb0dyYXBoKE11bHRpUHV0QnlPZmZzZXQsIE9w
SW5mbyhkYXRhKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIEFTU0VSVChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CisgICAgY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBwdXRCeUlkU3RhdHVzWzBdOworICAgIAorICAgIHN3
aXRjaCAodmFyaWFudC5raW5kKCkpIHsKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNl
OiB7CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzU2V0KCkpOworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBzdG9yZShiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBo
LmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGNh
c2UgUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb246IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVG
aWVsZFB1dEtpbmQuaXNEZWZpbmUoKSk7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJ
ZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQdXRC
eUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7Cisg
ICAgCisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAgICBp
ZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmll
bGRQdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIAorICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkp
OworICAgIAorICAgICAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgIFRyYW5zaXRp
b24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAg
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRp
b24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkp
OworICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkgeworICAg
ICAgICAgICAgLy8gSWYgd2UncmUgZ3Jvd2luZyB0aGUgcHJvcGVydHkgc3RvcmFnZSB0aGVuIGl0
IG11c3QgYmUgYmVjYXVzZSB3ZSdyZQorICAgICAgICAgICAgLy8gc3RvcmluZyBpbnRvIHRoZSBv
dXQtb2YtbGluZSBzdG9yYWdlLgorICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldCh2
YXJpYW50Lm9mZnNldCgpKSk7CisgICAgCisgICAgICAgICAgICBpZiAoIXZhcmlhbnQub2xkU3Ry
dWN0dXJlRm9yVHJhbnNpdGlvbigpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAg
QWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRv
R3JhcGgoCisgICAgICAgICAgICAgICAgICAgIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9w
SW5mbyh0cmFuc2l0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZSwgYWRkVG9HcmFwaChH
ZXRCdXR0ZXJmbHksIGJhc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNl
KTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1f
Z3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+b2Zmc2V0ID0g
dmFyaWFudC5vZmZzZXQoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50
aWZpZXJOdW1iZXI7CisgICAgICAgIAorICAgICAgICAvLyBOT1RFOiBXZSBjb3VsZCBHQyBhdCB0
aGlzIHBvaW50IGJlY2F1c2Ugc29tZW9uZSBjb3VsZCBpbnNlcnQgYW4gb3BlcmF0aW9uIHRoYXQg
R0NzLgorICAgICAgICAvLyBUaGF0J3MgZmluZSBiZWNhdXNlOgorICAgICAgICAvLyAtIFRoaW5n
cyBhbHJlYWR5IGluIHRoZSBzdHJ1Y3R1cmUgd2lsbCBnZXQgc2Nhbm5lZCBiZWNhdXNlIHdlIGhh
dmVuJ3QgbWVzc2VkIHdpdGgKKyAgICAgICAgLy8gICB0aGUgb2JqZWN0IHlldC4KKyAgICAgICAg
Ly8gLSBUaGUgdmFsdWUgd2UgYXJlIGZpeGluZyB0byBwdXQgaXMgZ29pbmcgdG8gYmUga2VwdCBs
aXZlIGJ5IE9TUiBleGl0IGhhbmRsaW5nLiBTbworICAgICAgICAvLyAgIGlmIHRoZSBHQyBkb2Vz
IGEgY29uc2VydmF0aXZlIHNjYW4gaGVyZSBpdCB3aWxsIHNlZSB0aGUgbmV3IHZhbHVlLgorICAg
ICAgICAKKyAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAorICAg
ICAgICAgICAgT3BJbmZvKGRhdGEpLAorICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAg
ICAgICAgICAgYmFzZSwKKyAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlm
ICh2YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKQorICAgICAgICAgICAgYWRkVG9HcmFwaChO
dWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5LCBiYXNlLCBwcm9wZXJ0eVN0b3JhZ2UpOworICAg
IAorICAgICAgICAvLyBGSVhNRTogUHV0U3RydWN0dXJlIGdvZXMgbGFzdCB1bnRpbCB3ZSBmaXgg
ZWl0aGVyCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDI5MjEgb3IKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MjkyNC4KKyAgICAgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0
cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNv
bXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJ
bmxpbmVkUHV0QnlJZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGRlZmF1
bHQ6IHsKKyAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpT
ZXR0ZXIpOworICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oaWRlbnRp
ZmllciksIE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gfQorfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
cmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjA0Nyw2ICs2
MTY0LDUwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+
KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAg
ICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAg
ICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAgICAg
Ym9vbCB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IGZhbHNlOworCisgICAgICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAg
ICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJy
ZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkpLmJ5VmFsSW5mbzsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBi
YXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCisgICAgICAgICAgICAgICAgLy8g
QXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBp
ZiAoYnlWYWxJbmZvIAorICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZv
CisgICAgICAgICAgICAgICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAg
ICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYmICFt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygp
LmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsK
KyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAgICAg
ICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0
dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0KQor
ICAgICAgICAgICAgICAgIGhhbmRsZVB1dFByaXZhdGVOYW1lKGJhc2UsIHByb3BlcnR5LCBpZGVu
dGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgYnl0ZWNvZGUu
bV9wdXRLaW5kKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJh
c2UsIHByb3BlcnR5LCB2YWx1ZSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9w
cml2YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BEZWZpbmVEYXRhUHJvcGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KGJ5dGVjb2RlLm1fYmFzZSk7CkBAIC04MjYwLDcgKzg0MjEsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQot
ICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgZWNtYU1v
ZGUoYnl0ZWNvZGUpKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JF
eGl0SW5kZXgsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIH0KIAogICAgIGlmICghY29tcGls
ZWRBc1B1dEJ5SWQpIHsKQEAgLTgyNzEsNyArODQzMiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJ
bmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAg
ICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDog
UHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1vZGUoYnl0
ZWNvZGUpKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1
dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcElu
Zm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQ
dXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xv
YmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKaW5kZXggMWM2YzY2ZjgwMjM1Y2Y5NjllYmIyMzE2MTkzY2Q4MzQ3MGQ4YzQzNS4uYWQ5ZjI0
YzUwODY2OGYwNDRkNDU1MzJiZTM2NWQzMTU3NTk4ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAg
IGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1l
OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBp
bGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGlu
ZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25j
dXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODUyMDBkNWRhZjFkZWU4ZTkwZmU4MTQxZGJiMWNjYmQ5YjUzMzdlZS4uNzAwMTZjY2U4MDdk
YWU2MDg5MmZkNzhmZWU4ZjFjMjM1YThiOTllNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTY2Niw2ICs2NjYsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5
VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToK
ICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiOTdhMjQzZmMxYzcz
MzVhNDA1ZDY4ZTQ1ZDQ5YTMyYzI4MThmMWMwLi4wNTRiOWNlYzI3OTliNjg2YWM5MWI0MmJhNTRj
ODU1YTI0NzMxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjU4LDEwMiArNjU4LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgICAgICAgICAgaWYg
KCFub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQdXRCeU9mZnNldChub2RlLCBpbmRleEluQmxv
Y2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDMoKSwgaXNEaXJlY3QsIGNoYW5nZWQsIGFs
cmVhZHlIYW5kbGVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0
OgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2Rl
T3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxk
RWRnZSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hp
bGRFZGdlLm5vZGUoKTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0g
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZh
bHVlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJh
c2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0
YXR1cy5pc1NpbXBsZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAg
ICAgICAgIEFTU0VSVChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAg
ICAgICAgICAgICAgVHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biYgY29uZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dy
YXBoLm1fdm0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0
dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbGxHb29kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnRGb3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxH
b29kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRp
b24oKSksIG5ld1N0cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpS
ZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29k
KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2gg
Q0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAg
ICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAg
ICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJh
bnNpdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24p
Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAg
ICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZh
dWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBu
b2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMs
IHN0YXR1cykpLAotICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVz
Lm51bVZhcmlhbnRzKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZz
ZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51
bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAg
ICAgICAgICAgIE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0
QnlPZmZzZXREYXRhLmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3Rh
dHVzLnZhcmlhbnRzKCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9
IGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQ
dXRCeU9mZnNldChkYXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+
b3AoKSA9PSBQdXRCeUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zm
c2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBp
c0RpcmVjdCwgY2hhbmdlZCwgYWxyZWFkeUhhbmRsZWQpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCkBAIC0xNDY5LDYgKzEzODcsOTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KE5vZGUqIG5v
ZGUsIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgRWRnZSBiYXNlRWRnZSwgRWRnZSB2YWx1ZUVkZ2Us
IGJvb2wgaXNEaXJlY3QsIGJvb2wmIGNoYW5nZWQsIGJvb2wmIGFscmVhZHlIYW5kbGVkKQorICAg
IHsKKyAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgIE5v
ZGUqIGJhc2VOb2RlID0gYmFzZUVkZ2Uubm9kZSgpOworICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpOworCisgICAgICAgIEFT
U0VSVChiYXNlRWRnZS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisKKyAgICAgICAgQWJzdHJhY3RW
YWx1ZSBiYXNlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoYmFzZU5vZGUpOworICAgICAgICBBYnN0
cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUodmFsdWVFZGdlKTsKKworICAg
ICAgICBpZiAoIWJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKKyAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVT
ZXQoKSwKKyAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwKKyAg
ICAgICAgICAgIGlzRGlyZWN0KTsKKworICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVChzdGF0dXMubnVtVmFyaWFudHMo
KSk7CisKKyAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5t
X3BsYW4uaXNGVEwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKKworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAg
VHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKKyAgICAgICAgZm9yIChjb25zdCBQdXRCeUlk
VmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiB2YXJpYW50LmNvbmRp
dGlvblNldCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hDb25kaXRpb24o
Y29uZGl0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJl
KG1fZ3JhcGgubV92bSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJl
RW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChzdHJ1Y3R1cmUpKSwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIG5v
ZGUtPm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50
OjpUcmFuc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdT
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICAgICAgVHJhbnNpdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBuZXdTdHJ1
Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKG5ld1N0cnVjdHVyZSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9
PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7CisgICAgICAgICAgICAgICAgbmV3U2V0Lm1lcmdl
KCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9k
ZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KKyAgICAgICAgbV9pbnRlcnByZXRlci5k
aWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5z
aXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOworICAgICAgICBpZiAobV9zdGF0ZS5m
b3JOb2RlKGJhc2VFZGdlKS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250
cmFkaWN0aW9uKQorICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKworICAg
ICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNv
bnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KKworICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmls
dGVyUHV0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQdXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgc3RhdHVzKSksCisgICAgICAgICAgICBFZGdlKGJhc2VOb2RlKSk7CisKKyAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5l
bnN1cmUodWlkKTsKKyAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAg
ICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwg
c3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKKworICAgICAg
ICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0
RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFudHMgPSBzdGF0dXMudmFyaWFudHMoKTsK
KyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgfQorCiAgICAg
SW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJldGVyPElu
UGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJldGVyOwogICAgIEluc2VydGlvblNldCBtX2lu
c2VydGlvblNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3
M2M3OGUzNzViOTg5ZWVkZTFmYmNiZmQxM2ZkNDZkN2VkMGYyZTIwLi45MDQ4NWYwYmJiNDc1YzRj
OWJlMTM1NTc5OGI1NjA2NmViMjkwOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVO
YW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBj
YXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA5MGU5YjEzNGVlYTAyMTg5NzQzY2YxNDFhN2Q5YTZmMmU3MTZiMDQzLi42YThh
NDYzYTBjMjQ5ZWE5MDk0Zjk4ZjRmODg5YjhjZjZjYmQ2YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE4OTcsNiArMTg5Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBkZDBkMTJkYWY4ZDlhMTljNDE4YTBk
YzNkNDkxY2NiNzAwNDRhZWY3Li4yMzU1M2E2MGRmMGQ3N2VmNmU1NjQwYzczMGRiMTkyM2U1YjQ3
MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIsNiArNTIsNyBAQAog
I2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNp
bmNsdWRlICJUeXBlTG9jYXRpb24uaCIKQEAgLTYxNSw5ICs2MTYsMTAgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgY29udmVydFRvUHV0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEs
IEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0g
UHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gg
fHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0
QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2ggfHwg
bV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWUpOwogICAg
ICAgICBtX29wSW5mbyA9ICZkYXRhOwotICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDMoY2hpbGRy
ZW4uY2hpbGQyKCkpOworICAgICAgICBpZiAobV9vcCAhPSBQdXRQcml2YXRlTmFtZSkKKyAgICAg
ICAgICAgIGNoaWxkcmVuLnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAgIGNo
aWxkcmVuLnNldENoaWxkMihiYXNlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKHN0b3Jh
Z2UpOwogICAgICAgICBtX29wID0gUHV0QnlPZmZzZXQ7CkBAIC02MjUsOCArNjI3LDEwIEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQoTXVsdGlQdXRC
eU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlk
IHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVzaCk7CisgICAg
ICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1f
b3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWUpOwogICAgICAgICBt
X29wSW5mbyA9IGRhdGE7CisgICAgICAgIGlmIChtX29wID09IFB1dFByaXZhdGVOYW1lKQorICAg
ICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGNoaWxkcmVuLmNoaWxkMygpKTsKICAgICAgICAg
bV9vcCA9IE11bHRpUHV0QnlPZmZzZXQ7CiAgICAgfQogICAgIApAQCAtMTA4OSw2ICsxMDkzLDcg
QEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRC
eUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3MSwxMyArMjI3NiwxMyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVp
bnQ4X3Q+KCkpOwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJ
ZDoKLSAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVz
aDoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6
CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVj
dDoKICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJl
Y3Q6CiAgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1
aW50OF90PigpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0yMjg1LDYgKzIyOTAsMjMgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgewor
ICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2
YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSkK
KyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5m
bzIuYXM8dWludDhfdD4oKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisK
ICAgICBib29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlMmM0OGFlZTVmMGRh
OTI4YmE5NDA1OGUxNDFjM2U1ZWQ3Y2U0NTZmLi5mN2I3NjQ3ODczYzY4NTY1NGVkOTg1MjZjZmE3
MTNiYmZkNjY3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yMDksNiArMjA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKFB1dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CiAgICAgbWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNo
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcEluZm8uaAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBi
NjM5Li40MzM1MjY1OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpA
QCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3Bl
cmFuZCBvcCkgOiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8o
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVD
TUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhw
bGljaXQgT3BJbmZvKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtp
bmQudmFsdWUoKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNp
dCBPcEluZm8oVCogcHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA3MTAzZjlkYjkwYmRi
N2YzNTA1ZmRjMTIzNDlkMmJmZDc2ZDRmMmYxLi4wNWY2NWYzODhiOWYyNGIyZTkwZjZkODEzMWY0
YTkxODAxYzljMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3Niw2ICsxMzc2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNl
IFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZToKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNl
IFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDA0MGQzZjNjYzhk
NGI0MTk3NzJjOWExYWQ2OGI2ZTRiZDkyMzc5MWYuLmRlMTY3ZTUzMmI1ZjljYWZkNWMzYjhhMzI1
OWQ5YzNmYzg2YmIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC01MjUsNiArNTI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAg
ICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAg
ICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2Fz
ZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5Ogog
ICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IGY0NmI0MTg3OTliOGUzNGI3NzYwMTZhOTllMGI2NDg3Nzdl
ZDQxZDMuLmRlZThmMWM2ZjExMjY3MWY2OTlhYTQ0ZDE2ZmZkM2RkNzAwZTI3NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0
LDYgKzM1MjQsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRo
aXMoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkK
K3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworCisgICAgaWYgKG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1
cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAvLyB0byBjaGVj
ayBpdCBoZXJlLgorICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIERpcmVjdCwgRUNNQU1vZGU6OnN0cmljdCgpLCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5k
KCkpOworICAgIH0gZWxzZSAgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eVZhbHVl
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdz
ID0gcHJvcGVydHlWYWx1ZS5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlz
RGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25T
ZXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIFRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUo
KSkpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIH0KKworICAgIG5vUmVz
dWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMjcyNCw3ICsxMjc0OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hH
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9k
ZSgpLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCks
IERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyNzM5LDcgKzEyNzY0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBj
YWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAogICAgIG5vUmVzdWx0
KG5vZGUpOwogfQpAQCAtMTI3NTQsNyArMTI3NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBE
aXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgRGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBQcml2YXRlRmllbGRQdXRL
aW5kOjpub25lKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDM4NCw3ICsxNDQw
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2Rl
KQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21h
TW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsK
ICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwog
ICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xNDM5Niw3ICsxNDQyMSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1v
ZGUsIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggNjYyNWQ2Mzk2YTVlZWRlYWZlZDU2YzY0MGZhODc5ZmM0ZTExY2NhNy4u
N2ZkYjg4YWY5ZTAxYWUxMzYyMmZmOGQwYTgxNzIzMzgyMWM5NGVlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzIwLDcgKzcyMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVDaGVja05ldXRlcmVkKE5vZGUqKTsKIAogICAgIHZv
aWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVk
UHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
LCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1v
ZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAo
KSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0
QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUs
IFByaXZhdGVGaWVsZFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0g
SklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwog
ICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEzNjAsNiArMTM2MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5v
ZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lk
IGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVk
Z2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbFdpdGhU
aGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zm
c2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCA4YTk1ZGY1NTI4NDZhYTY0ZGJmZTNhNjRjNmMzNzUzNGFiODQ5MTQwLi43MjA5ZWQ5
YWQ1NWZkMTM1ZmZjNzRjOTY5YTc0MGI1ZjczODEwNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI1OTYsNiAr
MjU5NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAg
Y29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCAzMjU2NjBlNTM1ZDk1YjQwNWE1MWRlZGFiY2RlNjM2YjVlNGVl
MDIwLi5lZDI4MTgyMThmMjM1NDcxYzMwMDQ5NTYxYTE0YTg1NWRmNzEzM2E1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5
MTksNiArMjkxOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAg
ICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2Fz
ZSBQdXRCeVZhbEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDA3MTUzYjhlNDcx
MmY2ODI5YjZlYmM2MzIxNzQ2NmY4M2Q0NmMxYzQuLjAxNzMwMWM0N2Y0MDc2YjVjYzNiMzEyYjY5
OGI2NjdlMDU0N2Q2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0yNjYsNiArMjY2LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgZW1pdCBJQyBjb2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hl
YWJsZUlkZW50aWZpZXIgYW5kIHdlIG5lZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAg
ICAvLyBiYXJyaWVyIGZvciBpdC4gT24gZ2VuZXJpYyBjYXNlLCB3ZSBwZXJmb3JtIHN0b3JlIGJh
cnJpZXIgZHVyaW5nIHNsb3cgcGF0aCBleGVjdXRpb24uCisgICAgICAgICAgICAgICAgaWYgKG1f
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKQorICAgICAgICAgICAgICAgICAgICBjb25zaWRl
ckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDk2YTdmMTY0MTQ2
MGE1MmU4MjZlNWM5MzdjZmNkODU0ZDM5YmQ0MmUuLjk1YjVhM2Q1ZWNiYjk4ZDNiNDhhZjRkMmE0
Yjk3MDczMTE0ZTNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKQEAgLTM5Myw2ICszOTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQ
dXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2Fs
bExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlNzg5MmFjNmMyMGU5Njc1
OGI0MzMzZGQ2ZjUzYzU1ZGZiZTJjYWExLi5mNTE0YWQxNTk3Yjg1MmI2NjVhODQyOGUxYWYxZTU4
NDg0MTIxY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC0xMDE4LDYgKzEwMTgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEF0b21pY3NBZGQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoKICAgICAgICAgY2FzZSBB
dG9taWNzQ29tcGFyZUV4Y2hhbmdlOgpAQCAtMzk0Myw2ICszOTQ2LDI1IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHBy
b3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVO
YW1lKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGJh
c2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgIGlmIChtX25vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVj
ayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgICAgIC8v
IHRvIGNoZWNrIGl0IGhlcmUuCisgICAgICAgICAgICBjYWNoZWRQdXRCeUlkKG1fbm9kZSwgYmFz
ZSwgdmFsdWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5k
KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX25v
ZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJp
dmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLAorICAgICAg
ICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmlj
dCgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUF0b21p
Y3NSZWFkTW9kaWZ5V3JpdGUoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKQEAgLTQxODksMTQgKzQyMTEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoTm9k
ZSogbm9kZSwgTFZhbHVlIGJhc2UsIExWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUsIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKICAgICB7Ci0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Ci0KLSAgICAgICAgTm9kZSogbm9k
ZSA9IG1fbm9kZTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKTsKKyAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCiAgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKQEAgLTQyMTIsNyArNDIzMCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAg
ICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKICAgICAgICAgCiAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC00
MjI3LDExICs0MjQ0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVy
IGNhbGwgSUNzIGdlbmVyYXRlZCBieSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAg
ICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53
aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBhdXRvIHB1dEtp
bmQgPSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgfHwgbm9kZS0+b3AoKSA9PSBQdXRQcml2
YXRlTmFtZSA/IERpcmVjdCA6IE5vdERpcmVjdDsKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVy
YXRvciA9IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3Jh
dGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmUpOworICAgICAgICAgICAgICAgICAgICBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRL
aW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OwpAQCAtNDI1OSw2ICs0Mjc3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisg
ICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2Vs
bChub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIGJhc2UsIHZhbHVlLCBu
b2RlLT5lY21hTW9kZSgpLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOworICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0ZXJmbHkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVj
Y2NhMjA1OWYxNS4uNzMxNzEwMDk2Y2YzZTI0OThhZTQ1ZGRhMjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTEzOSw5ICsxMzksOSBAQCBt
b2R1bGUgRFNMCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25N
b2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJUb1RoaXNT
dGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggMWUxY2YwNmUzMTU3ZDA1MTQ5NjUyNTBlNGJjMTNiYjEwMWVkZGMyZi4uOWFkY2Y4OGU5ZWQ0
NDMyZmE2YWRlZTE2NjEyMTY1YjExOWI5ZDBhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg2LDYg
KzU4Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3Zh
bF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05
MDEsNyArOTAzLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgICAg
ICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4o
KTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkK
ICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hh
YmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAg
ICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBpZiAoSnVtcChw
YXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICBiYWRUeXBlSnVt
cCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkp
OworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhv
dFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5l
eHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNTA4YWY1MGY2MWViMzE2ZmUzMzM5YTk3ZDUwZWM1
NGIxOTU2Yzc5Ny4uYjQ1YmUzYWQ1MDI3OTE1MGI3OTI0M2EwNGZmYmVjMTFmOTMxZjk4NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgc3RydWN0IE9wUHV0QnlWYWw7CiAgICAgc3RydWN0IE9wUHV0QnlWYWxEaXJlY3Q7Cisg
ICAgc3RydWN0IE9wUHV0UHJpdmF0ZU5hbWU7CiAgICAgc3RydWN0IE9wUHV0VG9TY29wZTsKIAog
ICAgIHN0cnVjdCBDYWxsUmVjb3JkIHsKQEAgLTE2MSw2ICsxNjIsMTUgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZv
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIGRvbmVUYXJnZXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldCkK
KyAgICAgICAgICAgIDogYnlWYWxJbmZvKGJ5VmFsSW5mbykKKyAgICAgICAgICAgICwgYnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KQorICAgICAgICAgICAgLCBub3RJbmRleEp1bXAobm90SW5k
ZXhKdW1wKQorICAgICAgICAgICAgLCBkb25lVGFyZ2V0KGRvbmVUYXJnZXQpCisgICAgICAgICAg
ICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5leHRIb3RQYXRoVGFyZ2V0KQorICAgICAgICB7CisgICAg
ICAgIH0KKwogICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbzsKICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVt
cCBub3RJbmRleEp1bXA7CkBAIC0yMzQsNiArMjQ0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3A+KGJ5VmFs
SW5mbywgcmV0dXJuQWRkcmVzcywgcHV0S2luZCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgfQog
CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChW
TSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgIGppdC5tX2J5dGVjb2RlSW5kZXggPSBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7Cisg
ICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChi
eVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIH0KKwogICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KFZNJiB2bSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CkBAIC0yNTksNiArMjc2LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0
ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKKyAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJl
c3NQdHIsIENhY2hlYWJsZUlkZW50aWZpZXIpOworCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBp
bGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJy
YXlNb2RlKTsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0
aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwpAQCAtNDA2LDExICs0MjUsMTMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBwcml2
YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2lu
ZChPcCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxwZXIgZm9yIEdldEJ5VmFs
IGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soUmVn
aXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1
bXBMaXN0JiBzbG93Q2FzZXMpOwogCisgICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0UHJpdmF0ZU5hbWUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOworCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVt
aXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKQEAgLTYwNSw2ICs2
MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBP
cFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02ODYsNiArNzA4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcAppbmRleCBkOGY5NWJiMGY3Y2ZjODk4MmIzOGU4NzBlMWJiYjdhMWQ0OTBkMmEw
Li5hYjZiMzc1NDFmMTljN2Y4ZGJiNzFlNGEyODNhNTViYzQwZDA3ZGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApA
QCAtMTM2LDExICsxMzYsMTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21h
TW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAgICAsIG1fcHJpdmF0
ZUZpZWxkUHV0S2luZChwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVz
ZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lk
IEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0
aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUZpZWxkUHV0S2lu
ZC5pc05vbmUoKSkgewogICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CiAgICAg
ICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAg
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKaW5kZXggMjljMmQyZTZkMzI4ZGE5Y2IzNzYxMTVkOTkyZWEyYTJjNTBj
NTk5NC4uNDIxYzQ2ZGViZDdhZmQwMzRjNjE4MzVjOWI1ODkzOTY0NWRlNmM0MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApA
QCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFs
RmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIK
IApAQCAtMTMxLDEyICsxMzAsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkK
ICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAg
ICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQoUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKQog
ICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFs
dWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQp
OwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAg
IApAQCAtMTQ1LDcgKzE0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9l
Y21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIG1f
cHJpdmF0ZUZpZWxkUHV0S2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDog
cHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKaW5kZXggMmY3NmRiMDA2OTIxMThhZjg1MmU3MDYyOTUwMjc0Mjk5ODVhY2Zi
Mi4uNDVmN2YwYzkxOGNlYjNiZGM3NDdlNDNlZGNlMzI2ZmExMDJlNjZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDIxIEBAIEFMV0FZU19J
TkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0K
IAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0
QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2Rl
IEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAg
ICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworICAgIHJldHVybiBFQ01BTW9kZTo6c3Ry
aWN0KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApCitQcml2YXRlRmllbGRQdXRLaW5kIEpJ
VDo6cHJpdmF0ZUZpZWxkUHV0S2luZChPcCkKIHsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZTsKKyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpOwog
fQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklU
Ojpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJl
Y3Qgb3ApCitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZFB1dEtpbmQgSklUOjpwcml2YXRlRmll
bGRQdXRLaW5kPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUgb3ApCiB7Ci0gICAg
cmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJldHVybiBv
cC5tX3B1dEtpbmQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMWZhNjliYTJiMjY0MGRhMDk5YWE4N2U3
NmQ3MDk4NjVlMDIyYmY0NC4uN2NiMTExNjQwMjRiZWI4MmI4OTBhZjRjNzcyNjYyM2VhNzgzMWZl
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
MTA1LDcgKzExMDUsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogICAgIHB1dEJ5VmFsKGds
b2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFN
b2RlKTsKIH0KIAotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2Rl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTExMTksNiArMTExOCwx
MzIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9i
amVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBl
Y21hTW9kZSk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFt
ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIE9wdGltaXphdGlvblJlc3Vs
dCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjpp
c0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1YnNj
cmlwdC5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29k
ZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2Vlbikgewor
ICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5
TmFtZSkgeworICAgICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZVdp
dGhDYWNoZWRJZCh2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAgICAgICAgICAgICAg
ICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZW0gbGlr
ZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAgICAgICAgICAgIG9w
dGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIG9w
dGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9j
aywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRp
bWl6ZWQgJiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9u
Y2UpIHsKKyAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEwIHRpbWVz
IHdpdGhvdXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2ZXIgbWFr
ZSB0aGF0IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZiBv
cHBvcnR1bml0eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBwdXRfcHJp
dmF0ZV9uYW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQgdXAgc2xv
d1BhdGhDb3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBpZiAoKyti
eVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6YXRpb25S
ZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBpZiAob3B0
aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CisgICAgICAg
IC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8tPnRvb2tT
bG93UGF0aCA9IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1
cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNEZWZpbmUoKSA/ICBv
cGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFt
ZUdlbmVyaWMpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAKKyAgICAvLyBQ
cml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBz
Y29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUK
KyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2Jq
ZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAg
IGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0
ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5
IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNz
IG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJp
Y3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Cisg
ICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZhbEluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNj
cmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywg
RUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFz
cyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBz
dHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRv
IGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJp
dmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAg
ICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7
Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1v
ZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCAzOGNkOWZkOWMxNGNmZDcz
OGRkNTUwNWVjNDZhMjczNjM2OTBjOWNjLi5jYjFkZWQyNWEyMzIxMTg4OGNkYjJkMTljZTNjOWUx
NDUwMmFhYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJKSVRNYXRoSUNG
b3J3YXJkcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJT
bG93UGF0aFJldHVyblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgpAQCAtMTkzLDEwICsxOTQsMTMgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RP
cHRpbWl6ZShKU0dsb2JhbE9iamUKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyos
IFByaXZhdGVGaWVsZFB1dEtpbmQpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8q
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkxpbmtDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAppbmRleCBjMjFjMGU2MWJlYjE1MzhiNjBhZTJhYTMxNzBjNTUyYTIzZjM2YmZl
Li40NzNjZTNhZmM3OGQyY2UzMjBkNDk0NDU5Yzk5ZWY1ZTExMmQyMTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQ
dXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
U3R1YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBAIC0yOTcsNiArMjk4
LDExIEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0K
IAorSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJ
ZChPcFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKK3sKKyAgICBy
ZXR1cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBQdXRLaW5kOjpEaXJlY3Qs
IHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCiB7CkBA
IC0zMTYsNyArMzIyLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUp
LCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRQdXRLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0
dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhN
RTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkg
dG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTM0Niw3ICszNTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAg
ZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJl
Y3QpCkBAIC0zNjksNiArMzc1LDQ3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9i
eVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRj
aGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExh
YmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBw
ZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0
UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZv
KiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNv
ZGUubV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBz
bG93UGF0aCA9IGxhYmVsKCk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwor
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlH
UFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVH
UFIpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1
dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2Fs
bDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0
ZXJCeUlkPigpOwpAQCAtNzAwLDcgKzc0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKLSAgICAgICAgZGly
ZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2Rl
KSk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0
S2luZChieXRlY29kZSkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMTM1OCw3ICsxNDA1LDcg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkUHV0
S2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTE0NjYsNiArMTUxMyw0MCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlW
YWw8T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0
dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50
aWZpZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRl
Y29kZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAg
IEp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1p
dFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVD
YXNlcywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2Rl
QmxvY2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2Rl
QmxvY2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQ
YXRoVGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5k
b25lVGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9u
SGFuZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgewor
ICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxp
emUocGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hC
dWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZh
dGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVy
biBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFs
SW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1dG8gZ2VuZXJpY0Z1bmN0
aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5l
LT5jb2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVM
b2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlv
bikpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCAyYTVlY2M3NDIxNDU1MDQ3MTU3M2IwOTE5OGNj
MTVlYjQ5NGJmZWRkLi5lY2VlODUxZjFlZTBiOWM5NzM5NzY0ZjU1MTc5MmZkZDIyMjk2MzMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIH0K
IAogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2st
PmFkZEJ5VmFsSW5mbygpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJv
cGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0g
cGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKworICAgIExh
YmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBw
ZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0
UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBi
eXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJp
dmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIHBy
b3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdU
NSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHByb3BlcnR5UmVncy50
YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQodmFsdWUs
IHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VSZWdzLCBwcm9wZXJ0
eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgp
KSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4
XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9b
bV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOworICAgIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxf
ZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1p
dF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CkBA
IC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9u
ZSgpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggZjYxMGMxOTc3NDY5ZGNk
OGM4ZTMwNDYzMWNhYzc0NmJkNDI4NDEzZi4uYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1
YTQ2NzQ4NzExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDkgKzU5LDkgQEAKICNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAj
aW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFt
ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeUlkRmxhZ3Mu
aCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGQ0ZDA5MTZmZjJkNzYxNDQwNDNhMzk1ZDNlOGE4
MTgzMDcyMDE0NmEuLjdiYjYyYTBjNDQ0YTkzNDMyYWRlZTVmNTI5ZmZmMjQ5NTViNWYxYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAt
MTE3Nyw0OCArMTE3NywxMjYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmlj
dCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlz
UHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1By
aXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGds
b2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5k
ZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBM
TElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKLSAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRvdWJsZSBzdWJz
Y3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwotICAgICAgICB1aW50MzJfdCBz
dWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJs
ZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAm
JiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAgICAgICAgYmFzZU9iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAs
IGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRl
eFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOwotICAgICAgICB9Ci0g
ICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBh
biBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkp
KQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVO
YW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJp
Y3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxk
Tm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3Mp
IHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFk
ZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9i
YWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOyAgICAKLSAgICAg
ICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBn
bG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQog
ICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisKKyAg
ICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
dm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vz
c2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMg
YXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0g
dHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKGJ5
dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIGVs
c2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlzU2V0KCkpOworICAgICAg
ICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwo
KQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAgICAgJiYgc3Vic2NyaXB0
LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNh
Y2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlmIChvbGRT
dHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAg
ICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQor
ICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOworCisgICAgICAgICAgICAg
ICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
KS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBv
cHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJhcmVEYXRhKCktPnNoYXJl
ZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgi
RGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFy
aW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlE
ID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICBtZXRhZGF0YS5t
X25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigp
OworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwo
KTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJl
KHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAg
ICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAg
ICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFj
aXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3Ry
dWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
Z2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFzYXdQb2x5UHJv
dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT5p
c09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0
cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJl
LT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHku
c2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnQgaGVs
cHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRvIGRpc2FibGUgY2FjaGlu
ZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0aGVuIHN0b3JlIHRvIGFu
IGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZworICAgICAgICAgICAgICAg
IC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3ZSByZWlmeSBhIGxhenkg
cHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRvIGRpc2FibGUgY2FjaGlu
Zywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRvZXMgbm90Cisg
ICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMgb2Ygc3RydWN0
dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgLy8gdHJh
bnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG5ld1N0cnVj
dHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNj
cmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZjMzA4ZDlmM2RkZTI1Yjlm
ZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFlMThjYmZlODMzZjNhOWMx
Y2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZWJkMzZiYWNlZGQ0ZTAz
ODE0MDE2MjlmOTZhMTE2NWExZTdlOTM2Ni4uYTYwMmFiZjAzMjgyYjEyMGQzYzYxY2VmNzk5NjFh
MmEwOTAwMWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYxNCw2ICs2MTQsMTMgQEAgbWFjcm8g
d3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRBZnRlclNsb3dQYXRoKQog
ICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9h
ZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisgICAgZ2V0
KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisgICAgd3JpdGVCYXJyaWVy
T25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKy53cml0ZUJhcnJpZXJE
b25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIGNlbGxG
aWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUp
CkBAIC0xNjkzLDYgKzE3MDAsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0
ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNw
YXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwg
T3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92
YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBn
ZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEo
dDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVj
dHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
Lm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRh
ZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRl
TmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9i
amVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4g
bWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0
cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAg
ICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJP
bk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAj
IFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAg
ICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDAsIC5v
cFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246Cisg
ICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhl
IGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0
MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlz
cGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUl
LCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCA2ZmUxNzMwNzhjYWMzYzFjYzE5MTQ4MDYzNmQyNzdlYmJmYWEz
NTQzLi5mYWZmNzQyM2ZhMTU1Y2E1MjhjNzVkOGM0OWE2ZmZjNGIzOGE4ZmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZh
dGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlz
cGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUs
IE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdldChtX3Byb3Bl
cnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDEsIC5v
cFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BQ
dXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJp
bmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRlTmFtZVNsb3cK
KworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3Q1XSwg
dDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgIyBBdCB0
aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAgICAjIHQyIC0+
IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisgICAgbG9hZGkg
T3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAg
IGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6
ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFkYXRhIGludG8g
dDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBiYXNlIGludG8g
dDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlvbjoKKyAgICAj
IFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xkcyB0aGUgYmFz
ZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0
W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQor
ICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisg
ICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQp
CisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9p
bnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAg
IG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYTEyMzc3YTliMTNlOTFiZmYzY2EwNzJkMmQzNzkwNmY5ZTZjYjYzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBy
aXZhdGVGaWVsZFB1dEtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKwordm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91dC5wcmludCgi
U2V0Iik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ByaXZhdGVGaWVsZFB1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
aXZhdGVGaWVsZFB1dEtpbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNkYzRjYTMwNDhlYzdkYTAxZGJhMGQw
YWFmYzg0YmI1Njc1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHly
aWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisq
IGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEg
b25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50U3RyZWFtOworfTsKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQdXRLaW5kIHsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFNl
dCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERlZmluZSA9IDI7CisKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZnJvbUJ5dGUodWlu
dDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKGJ5dGUpOyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIG5vbmUoKSB7IHJldHVybiBQcml2YXRl
RmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQ
dXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoU2V0KTsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBkZWZpbmUoKSB7IHJldHVybiBQcml2
YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc05v
bmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vbmU7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFNldDsgfQorICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gRGVmaW5l
OyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCh1aW50OF90IHZhbHVlKQor
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZSA9
PSBOb25lIHx8IG1fdmFsdWUgPT0gU2V0IHx8IG1fdmFsdWUgPT0gRGVmaW5lLCBtX3ZhbHVlKTsK
KyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzA4YjVhZDM1YTEzMGViMGJkMWJmYTc0YzU5ZjU5OTk2ODQ4YWUxOS4uZThlOWI4YzQzNWNhYmU4
ZDUyMWMyN2UzOTMzMTUwOGJjNmUxYzRkOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wOC0xNCAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ11bRVNOZXh0XSBD
cmVhdGUgYSBuZXcgb3Bjb2RlIHRvIGhhbmRsZSBwcml2YXRlIGZpZWxkcyBzdG9yZS9kZWZpbmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdGlu
ZyB0ZXN0cyB0aGF0IGVtaXQgYGdldF9wcml2YXRlX25hbWVgIHRvIGF2b2lkIGV4ZWN1dGlvbiBp
bgorICAgICAgICBGVEwvREZHLgorCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1u
YW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
ZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10
by1tdWx0LXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQt
d2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLW9zci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlm
aWVyLmpzOiBBZGRlZC4KKwogMjAyMC0wOC0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWdFeHAgc3RpY2t5IG5vdCBtYXRjaGluZyBhbHRlcm5hdGVz
IGNvcnJlY3RseSwgaWdub3JpbmcgbGFzdEluZGV4IHJlcXVpcmVtZW50CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXIt
aW5zZXJ0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNWU2MzA1NTc4ZGVmNjhiNGUyNmZmZjhlNzFjZjll
MGI5NDhmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZh
dGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpAQCAtMCwwICsxLDY5IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0
U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uKGEsIGUp
IHsKKyAgICAgICAgaWYgKGEgIT09IGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhyb3dzOiBm
dW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9u
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNl
cHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOwor
CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7Cisg
ICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9
IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09
ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09
PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNb
InAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBvbGRPYmplY3Qg
PSBuZXcgQzsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGlmIChpIDwgNTAwMCkgewor
ICAgICAgICBsZXQgYyA9IG5ldyBDOworICAgICAgICBjLnNldEZpZWxkKGkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChpID09IDUwMDApCisgICAgICAgICAgICBnYygpOworICAgICAgICBv
bGRPYmplY3Quc2V0RmllbGQoe3Byb3A6IGl9KTsKKyAgICAgICAgZWRlbkdDKCk7CisgICAgICAg
IGFzc2VydC5zYW1lVmFsdWUob2xkT2JqZWN0LmdldEZpZWxkKCkucHJvcCwgaSk7CisgICAgfQor
fQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2
YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2Vj
OGFkYmM0ODE0YTM2MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlk
LWRpcmVjdC5qcwpAQCAtMCwwICsxLDU0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICIt
LW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBs
ZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6
ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQor
fQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOwor
CisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKwor
ICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAg
ICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisg
ICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOwor
ICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRG
aWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEM7CisgICAgaWYgKGkgPiA1MDAwKSB7CisgICAgICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGMuc2V0RmllbGQuY2FsbCh7fSk7
CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBjLnNldEZpZWxkKGkpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRp
bmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMDJmYWE4OTFhZTQxNDAxZWVhY2ZkYWVkODM1ZjRlNDJkZjRlNWU0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRv
LW11bHQtcHV0LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDU3IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIsICItLXVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBi
dXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaXRlcmF0aW9ucyA9IDEwMDAwMDsKK2xl
dCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2xldCBjb25zdHJ1Y3REaWZmZXJlbnQgPSBm
YWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgp
IHsKKyAgICAgICAgaWYgKGNvbnN0cnVjdERpZmZlcmVudCkKKyAgICAgICAgICAgIHRoaXMuZm9v
ID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbWV0aG9kKGosIG90aGVyKSB7
CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgbGV0IG9iaiA9IHRoaXM7CisgICAgICAgIGZv
ciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0ZXJhdGlvbnM7IGkrKykK
KyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgaWYgKGogJSAyKSB7CisgICAgICAgICAgICBvdGhl
ci5mb28gPSBqOworICAgICAgICAgICAgb2JqID0gb3RoZXI7CisgICAgICAgIH0KKyAgICAgICAg
b2JqLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5tZXRob2QpOwor
bm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb3RoZXJDID0gbmV3IEMo
KTsKKworY29uc3RydWN0RGlmZmVyZW50ID0gdHJ1ZTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAz
MDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMubWV0aG9kKGksIG90aGVyQyk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDApOworfQorCit0cmlnZ2VyQ29t
cGlsYXRpb24gPSB0cnVlCitsZXQgYyA9IG5ldyBDKCk7CitjLm1ldGhvZCgwLCBvdGhlckMpOwor
YXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0
LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQt
Zm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MjBlYzgwNGE5NGY3MWUz
NThlYTdhYWU2YTZmZThkZWUyNTg1NTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpA
QCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRp
ZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lu
bGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGl0
ZXJhdGlvbnMgPSAxMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2NsYXNz
IEMgeworICAgICNmaWVsZCA9IDA7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIGxldCBjID0g
MDsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwgaXRl
cmF0aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAgICB0aGlzLiNmaWVsZCA9IGM7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBjID0g
bmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICBjLm1ldGhvZCgp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNv
bXBpbGF0aW9uID0gdHJ1ZQorYy5tZXRob2QoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVs
ZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1nZW5lcmljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5l
cmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJkNmMyOTljNjYyNzBiYWJjYTNkMDA3YjdhNzgzMDk3NzI3OTRk
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdl
bmVyaWMuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBp
ZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9u
KGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSB0aGlz
LmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNbZHluYW1p
Y1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEZp
ZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAg
ICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAg
ICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5v
SW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRG
aWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7
Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJvcGVydHkn
ICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0ZXN0Jyk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU5NTk4ZTcwMTlkMzc0ZDYwYWE5ZDdjZGE5Y2Y1NDJiNzE2N2YzYjQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5l
LmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlv
biwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZh
bHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9u
Lm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhv
dXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkT3ZlcnJpZGVSZXR1cm4gPSBm
YWxzZTsKK2xldCBvYmo7CisKK2NsYXNzIEIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICBpZiAoc2hvdWxkT3ZlcnJpZGVSZXR1cm4pCisgICAgICAgICAgICByZXR1cm4gb2JqOworICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgI2Zp
ZWxkID0gJ3Rlc3QnOworCisgIGdldEZpZWxkKCkgeworICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxk
OworICB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlm
IChpID4gMTAwMCkgeworICAgICAgc2hvdWxkT3ZlcnJpZGVSZXR1cm4gPSB0cnVlOworICAgICAg
b2JqID0ge307CisgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZhbHVl
KEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwob2JqKSwgJ3Rlc3QnKTsKKyAgICAgIGFzc2VydC5z
aG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgICBuZXcgQygpOworICAgICAg
fSk7CisgIH0gZWxzZSB7CisgICAgICBsZXQgb2JqID0ge307CisgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICAg
IGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgICBjLmdldEZp
ZWxkLmNhbGwob2JqKTsKKyAgICAgIH0pOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0N2NlYTYwMDA1
YTliNWY4NjhhMGI1M2JmMjFkNzVjMjRmYmIwOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpAQCAtMCwwICsxLDUwIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAg
ICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rv
cigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBp
ZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhy
b3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRp
b24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAg
IH0KK30KKworbGV0IHNob3VsZFN0b3JlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
Y2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgI2ZvbzsKKworICAgIGlu
aXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3RvcmUpCisgICAgICAgIHRoaXMuI2ZvbyA9IDEyOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcgQygpOworfQorbm9JbmxpbmUoZm9vKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgIHNo
b3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9
PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICBmb28oKTsKKyAgfQor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRl
LWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlmMWI4MGIwMmZjMGE3MTk1NDdlN2EyMWRiOTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUt
Y29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0
aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdF
eGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5j
ZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5h
bWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5j
dGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0
ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5z
ZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
Zm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsKKworbGV0IGMyID0gbmV3
IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICd0ZXN0Jyk7CitjMi5zZXRG
aWVsZCgnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICdmb28nKTsKKwor
bGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAg
IGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rlc3QnKTsKK30pOworCithc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgKCkgPT4geworICAgIGMyLnNldEZpZWxkLmNhbGwoYywgJ3Rlc3QnKTsKK30pOworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNjk1YTFhZGUz
NzY5YzYxNGRkYzkzMDEzMmVhZjg4ZTIxZWMyZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCwwICsxLDQwIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xl
dCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBp
bml0KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0
eSA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAo
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0
aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBv
bHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZmM1MzY0Y2E5
ZTAyY2U5NTIzYmFjNDE1YzE4MDE0NmUxNTY4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAj
ZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpICUgMikK
KyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0
JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsK
KyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwor
ICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291
bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk3YTMyOTdiZWQ4MmQ3YzBjN2U1MmQ1NWE3NWU1YWMyMTE4MWI3Y2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxv
d1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAg
ICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
ZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxk
ID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQo
KSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZDM3ZDgxN2VkZTE0YTIwMzVmMzVhNjg4YmE0MTVkYTE1ZmQzNzI5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRp
ZmZlcmVudC1pZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBl
KSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY2xh
c3NEZWNsYXJhdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkOworICAgIAor
ICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAg
ICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNm
aWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKwor
ICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBj
bGFzc0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEg
OiBuZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVzdCcgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406725</attachid>
            <date>2020-08-17 10:21:40 -0700</date>
            <delta_ts>2020-08-25 13:10:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200817142133.patch</filename>
            <type>text/plain</type>
            <size>146071</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZmY3ZjI2NjQxYjk4ZjZkOTYzOWNiYTg2NWQzNDU4NDU2Njk3NDJkLi5kZGYyZjk3NWQ0MDU0ODYy
YThkZjk1ZmI5MTA3NDlkNWIxZmQ1MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjQgQEAKKzIwMjAtMDgtMTQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuCisgICAgICAgIEl0IGlz
IGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2YXRlTmFtZWAgdGhhdCBoYW5kbGVz
IGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZhdGVfbmFtZWAuIFRoZSBzdHJhdGVn
eSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2YXRlX25hbWVgIGlzIHZlcnkgc2lt
aWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAgICAgICAgYHB1dF9ieV92YWxbX2Rp
cmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBhcyBgW011bHRpXVB1dEJ5T2Zmc2V0
YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlvbiBmcm9tIExMSW50IGFuZCBCYXNl
bGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5vdCBwb3NzaWJsZSwgd2UgZW1pdCB0
aGUgYFB1dFByaXZhdGVOYW1lYCBub2RlLiBXZSBnZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2Ug
dG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZWAgd2l0aCBgQ2hhY2hlYWJsZUlkZW50aWZpZXJz
YCBpbnRvCisgICAgICAgIGBQdXRCeU9mZnNldGAgaWYgd2UgY2FuIHByb3ZlIGl0cyBzdHJ1Y3R1
cmUgc2V0IGF0IGNvbnN0YW50IGZvbGRpbmcKKyAgICAgICAgcGhhc2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAg
ICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xk
aW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRp
UHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50
aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZv
OjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNo
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAg
IChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpC
eVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlk
R2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0
QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0
S2luZDxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQ
dXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dFBy
aXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBsbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpz
ZXQpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc05vbmUgY29uc3QpOgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjppc1NldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVGaWVsZFB1dEtpbmQ6OmlzRGVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZp
ZWxkUHV0S2luZDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRL
aW5kOjpQcml2YXRlRmllbGRQdXRLaW5kKToKKwogMjAyMC0wOC0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2Nr
Rm9yKCkgbmVnbGVjdGVkIHRvIHNldCB0aGUgZXhjZXB0aW9uIHBvaW50ZXIgcmVzdWx0IGluIG9u
ZSBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3
NzBlODgxN2EwZThkYjJiNDhkNzI2Mzc3OGRjMTUuLjlmZDQ5NWMzZGQwNjk5MDdhNWFlNzU4ZjBh
MWQyZjhlM2ExZjM3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0
Myw3ICs1NDMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlv
bi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29kZS9QdXRCeVZhbEZs
YWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0
dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtOTY5LDYgKzk2OCw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9PcHRpb25zLmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1lL1BhcnNl
SW50LmgKKyAgICBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaAogICAgIHJ1bnRpbWUvUHJp
dmF0ZU5hbWUuaAogICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODE5
N2Y2YjYwYzhlM2ZhNWJiMGU3ODdiNDZhZmU0Y2VmZjRiZmU0MS4uMmMzOTZhOTVhN2IzNGM0OTE2
ZTBkYWZhYTM5ODQ1ZDlhYjJmZjM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEyNTUsNyArMTI1NSw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklU
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4
MDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2
NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJC
OUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBD
QjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
OTc2RTVBMUZBMzc1OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2NCw2ICsxMjYzLDcgQEAK
IAkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAw
NkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdp
c3RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QUREMTQzMEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2
RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0
Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1
OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4
RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTM3LDggKzQxMzcsNiBAQAogCQk4
NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9
IHlhcnIvWWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2
RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0
QnlWYWxGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0
NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMy
OEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGgg
PSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNTgsNiArNDE1Niw4IEBACiAJCTg2QUREMTQ0MEZE
REVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRp
ZXJlZE1NYXBBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRN
TWFwQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0
ZUZpZWxkUHV0S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0
QjhBMjA4MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcml2YXRlRmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJs
ZXJNSVBTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTc3LDYgKzc1NzcsOCBA
QAogCQkJCTM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovLAogCQkJCUNF
MjBCRDAyMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuY3BwICovLAogCQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmls
ZUNyZWF0aW5nRnV6emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdDOTUg
LyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAyNEI4OUVBNDAwNDg3
Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBD
QjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEg
LyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlC
QSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLApAQCAtODQ0OCw4ICs4NDUwLDYgQEAKIAkJCQkw
RjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNC
NEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0
QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0JCQkJODY3NkM2RTcy
MzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJCTg2NzZDNkU2MjM0
NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMTcwLDYgKzEwMTcwLDcgQEAKIAkJCQlD
RTIwQkQwNzIzN0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAwOUUgLyogUHJl
dmVudENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2M0RENTQxRUE5QjYx
RTAwMTAzQTY5IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlF
QTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMjEwLDcgKzEwMjExLDYgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAz
MUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0
QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGMzMTBiOWE0Y2RmZDYxZDQ3ODJlZjY2OWQzYTliMmQ1Y2UzMTAyZjYuLmRiZDY1MWJmZGNmOTRm
ZTI5NDhmOTg4NTViMTc2YWQ2MWY2N2UxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
QEAgLTI2OSw3ICsyNjksNiBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0
ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmNwcAotYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC05MzcsNiArOTM2LDcgQEAgcnVudGltZS9P
YmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKIHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVD
cmVhdGluZ0Z1enplckFnZW50LmNwcAorcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAog
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
Y3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDU4Nzg0NWZkNTBlMzJlYmZiZWU2
ZGJkOGQ2ZWYxMDU5NGFiM2QxYzUuLjk2ZTNlZGNhYWM0MTcwMGI4NmFiZGNkZWU0Zjg1MjMyODMw
MmRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgpAQCAtNDYsMTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6TExJbnRDYWxsTGlua0luZm8s
CiAgICAgOlJlc3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxk
UHV0S2luZCwKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zm
c2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29s
dmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTczLDYgKzU3
MywyMCBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRlX25hbWUsCisgICAgYXJnczog
eworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1
dEtpbmQ6IFByaXZhdGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAg
ICAgICBvbGRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0
ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3
U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAg
YXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01OTgsNyArNjEyLDcg
QEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAorICAgICAgICBlY21h
TW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDVmNTg2NThhMmU2YjFlNDQ2ZDgzYTIxMDAwMjg1
M2ViMjM4Y2M0MWIuLjY5MjhmN2Y4ODY5YzRlZjNiYTU1OGFlZTU1Mzc2YTEzNjE3NTkyZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cApAQCAtMjI2LDYgKzIyNiw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1w
bChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhP
cEVudW1lcmF0b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BH
ZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNl
LCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2
YWx1ZSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92
ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBV
U0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTM5NCw2ICszOTUsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAg
ICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6Cisg
ICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2Zp
ZWxkOgogICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZp
bmVfYWNjZXNzb3JfcHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDZiNWE5MDJkOGEzZDc3ZDQyNjk1OTBlNTMwODkxYWMyNmQ3MjEx
ZjAuLmZkNGY2NDA4ODZmMjgwZTljYzA1ODQyZWVlYzNjNmE3OGVkMjNmYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01NDIsNiArNTQyLDcg
QEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEluQnlWYWwpCiAgICAg
ICAgIExJTksoT3BQdXRCeVZhbCkKICAgICAgICAgTElOSyhPcFB1dEJ5VmFsRGlyZWN0KQorICAg
ICAgICBMSU5LKE9wUHV0UHJpdmF0ZU5hbWUpCiAKICAgICAgICAgTElOSyhPcE5ld0FycmF5KQog
ICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTExMzYsNiArMTEzNywyNSBAQCB2
b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgU2xvdFZpc2l0b3ImIHZpcwogICAgICAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFy
a2VkKG9sZFN0cnVjdHVyZSkpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5i
YXJyaWVyZWQobmV3U3RydWN0dXJlKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIGlmICgh
b2xkU3RydWN0dXJlSUQgfHwgIW5ld1N0cnVjdHVyZUlEKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9w
cm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHkpOworICAgICAg
ICAgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
ID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9s
ZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdT
dHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChu
ZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEz
MDIsNiArMTMyMiwyMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hl
cygpCiAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAg
ICAgIH0pOwogCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4o
WyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgU3RydWN0dXJl
SUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOworICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgICYm
ICghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAg
ICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IHB1dF9wcml2YXRlX25hbWUgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9v
ZmZzZXQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7CisgICAgICAgIH0pOworCiAg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BUb1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5o
ZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggMzlmZWUwYTY2OWEyODI2NTg1YTJhNDkyMmEzODJi
ZjZiOGEwYWFlMy4uZTA1YTI1NjQ4YTEzYjA1OTcyZjY2NGMzN2RlMDhjZDNjODk0OTU5NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIk9wY29k
ZVNpemUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUg
IlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgi
CkBAIC0yNTgsNDYgKzI1OCw2IEBAIHN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4gewog
ICAgIH0KIH07CiAKLXRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFB1dEJ5
VmFsRmxhZ3MsIHNpemU+IHsKLSAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5
U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwotCi0gICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJv
b2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29kZWQgYXM6Ci0gICAgLy8gICAgICAgICAgaXNT
dHJpY3QKLSAgICAvLyAgICAgICAgICAgICB2Ci0gICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNE
aXJlY3QKLSAgICAvLyAgICAgICAgICAgXgotICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KLSAgICBzdGF0aWMgY29uc3RleHBy
IGludCBzX2lzRGlyZWN0Qml0ID0gMTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3Ry
aWN0Qml0ID0gMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmRNYXNrID0gMTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kU2hpZnQgPSAyOwotCi0gICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFn
cykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBUYXJn
ZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBmbGFncykKLSAgICB7Ci0gICAgICAgIGF1dG8g
aXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKLSAgICAg
ICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSk7Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7Ci0gICAgICAg
IHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tp
bmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQotICAgIHsKLSAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwot
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmlj
dEJpdCk7Ci0gICAgICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKLSAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0
ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgICAgICByZXR1
cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPwotICAgICAgICAgICAg
aXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlW
YWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6Ci0gICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZp
ZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChl
Y21hTW9kZSk7Ci0gICAgfQotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBz
aXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0g
c2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGlj
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2Ug
PSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtNDI3LDQgKzM4Nywy
NCBAQCBzdHJ1Y3QgRml0czxFQ01BTW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBz
aXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZp
dHM8UHJpdmF0ZUZpZWxkUHV0S2luZCwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXpl
PiB7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0aWMg
Ym9vbCBjaGVjayhQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQmFzZTo6Y2hlY2socHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0
TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0KHB1dE1vZGUudmFsdWUo
KSk7CisgICAgfQorCisgICAgc3RhdGljIFByaXZhdGVGaWVsZFB1dEtpbmQgY29udmVydCh0eXBl
bmFtZSBCYXNlOjpUYXJnZXRUeXBlIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHJp
dmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChwdXRNb2RlKSk7CisgICAg
fQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKLXsKLSAgICBD
b21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJlY3QoKSkKLSAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZp
ZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtQdXQiKTsK
LSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIzODI1NmE3MDU2ODc2
NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgOiB1
aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19OwotCi1jbGFzcyBQ
dXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxh
Z3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5
VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBBIGRpcmVjdCBwdXRf
YnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBp
ZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgotICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7Ci0gICAg
fQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURlZmluZVByaXZh
dGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOwotICAgIH0K
LQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQdXRQcml2YXRlRmll
bGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFn
cyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBi
b29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQotICAgIEVDTUFNb2Rl
IGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAgIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6
UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7IH0K
LQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJlY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCi0gICAg
ICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5v
bmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3MsIEVD
TUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKLSAgICAgICAgLCBt
X3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsKLSAgICBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAgICBFQ01BTW9kZSBt
X2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewot
Ci1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDIxNWQ2YjdlM2NhMjlhZmRiZWMwYTg0NDBhMzU3OGJiNTkwMzJjMjYuLjZlY2I4OTg5
MjZhNmNhMDYwMDgxMWE5NzdiMmIxNGYzOWQxYTBlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZEV2YWxDb2Rl
QmxvY2suaCIKQEAgLTI3MTIsNyArMjcxMyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiCiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewot
ICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0QnlWYWxE
aXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3MzYsMTMgKzI3MzcsMTMgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IHVuc2lnbmVkIGkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQ
cml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQo
ZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJv
cGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUoKSk7CiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVG
aWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9w
ZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9k
ZSgpKSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCBmNGE4Mjc4OTJlZTc4OWE2YjE0YmMwZTRkNWMwNjhh
ZTM1MjVkOWUzLi4wYTQyNTViMDhkZDIyNTEzM2QwZmU3YTQ4YzhiYzM5OTIwNzhhNzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC00MDE4LDE2ICs0MDE4LDMyIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAg
Y2FzZSBQdXRCeUlkRGlyZWN0OiB7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dFByaXZh
dGVOYW1lKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSkg
eworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGNhY2hlYWJsZUlk
ZW50aWZpZXIgc2V0LCB3ZSBuZWVkIHRvIGhhdmUgYSAKKyAgICAgICAgICAgIC8vIENoZWNrQ29u
c3RhbnQgZm9yIHByb3BlcnR5IGJlZm9yZSBQdXRQcml2YXRlTmFtZSBzaW5jZQorICAgICAgICAg
ICAgLy8gd2UgZG9uJ3QgY2hlY2sgdGhlIGlkZW50aWZpZXIgZHVyaW5nIFB1dFByaXZhdGVOYW1l
CisgICAgICAgICAgICAvLyBJQy4KKyAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHByb3BlcnR5
ID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsIHByb3BlcnR5LnZhbHVlKCkuaXNTeW1ib2woKSk7CisgICAgICAgIH0KKwogICAg
ICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgYm9v
bCBpc0RpcmVjdCA9IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCB8fCBub2RlLT5vcCgpID09
IFB1dFByaXZhdGVOYW1lOwogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgdmFsdWUubV9z
dHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRC
eUlkRGlyZWN0KTsKKyAgICAgICAgICAgICAgICBpc0RpcmVjdCk7CiAKICAgICAgICAgICAgIGJv
b2wgYWxsR29vZCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggYWM0Nzc1ODRiNDg3MDVlNzMxMTQ3ZjhkY2YwZGY3NzQxODRhZGIzMS4uMDhhOGIyYTA0NDQ4
N2FmMDZkZTA2OWQ1MTY0ZGMzYWYzYWZmNzU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcwLDkgKzcwLDkgQEAKICNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNs
dWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVj
dG9yLmgiCkBAIC0yNTIsNiArMjUyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgTm9kZSogYmFzZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFs
dWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlzRGlyZWN0LCBCeXRlY29k
ZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUpOwogCisgICAgdm9pZCBoYW5kbGVQdXRQcml2
YXRlTmFtZSgKKyAgICAgICAgTm9kZSogYmFzZSwgTm9kZSogcHJvcGVydHksIENhY2hlYWJsZUlk
ZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQ
dXRCeUlkU3RhdHVzJiwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKICAgICB2b2lkIGhhbmRsZURl
bGV0ZUJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRl
QnlTdGF0dXMsIEVDTUFNb2RlKTsKICAgICAKQEAgLTEyNjcsMTggKzEyNzAsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgotRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0ZWNv
ZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci19Ci0KLXRlbXBsYXRlPD4K
LUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpOwotfQotCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRh
YmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChieXRl
Y29kZUluZGV4KTsKQEAgLTUwMDMsNiArNDk5NCwxMzAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICB9IH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0UHJpdmF0ZU5hbWUoCisgICAgTm9kZSogYmFzZSwgTm9kZSogcHJvcGVydHksIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSog
dmFsdWUsCisgICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQoreworICAgIGlmICghcHV0QnlJZFN0YXR1
cy5pc1NpbXBsZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6
OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0
KCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgIGFkZFRv
R3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVG
aWVsZFB1dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7Cisg
ICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2Vz
Q2FsbHMoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmcoKQorICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0
aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZv
KHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV9n
cmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+
bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAKKyAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1
dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA6IHZhcmlhbnQub2xkU3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQu
a2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9
IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlQdXRCeU9mZnNl
dCwgT3BJbmZvKGRhdGEpLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgQVNTRVJUKHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBj
b25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IHB1dEJ5SWRTdGF0dXNbMF07CisgICAgCisg
ICAgc3dpdGNoICh2YXJpYW50LmtpbmQoKSkgeworICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJl
cGxhY2U6IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgCisgICAgICAgIHN0b3JlKGJhc2UsIGlk
ZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1f
Z3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCkt
Pm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBBU1NFUlQocHJp
dmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAg
ICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZh
dGVGaWVsZFB1dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVy
ZUZvclRyYW5zaXRpb24oKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CisgICAgCisgICAgICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgVHJh
bnNpdGlvbiogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAg
ICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJh
bnNpdGlvbigpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKSk7CisgICAgCisgICAgICAgIGlmICh2YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7
CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBncm93aW5nIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIHRo
ZW4gaXQgbXVzdCBiZSBiZWNhdXNlIHdlJ3JlCisgICAgICAgICAgICAvLyBzdG9yaW5nIGludG8g
dGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCisgICAgICAgICAgICBBU1NFUlQoIWlzSW5saW5lT2Zm
c2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKKyAgICAKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5v
bGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAg
ICAgICBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0g
YWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSwgT3BJbmZvKHRyYW5zaXRpb24pLAorICAgICAgICAgICAgICAgICAgICBiYXNlLCBhZGRUb0dy
YXBoKEdldEJ1dHRlcmZseSwgYmFzZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAg
ICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHks
IGJhc2UpOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhKiBkYXRh
ID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5vZmZz
ZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0g
aWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgCisgICAgICAgIC8vIE5PVEU6IFdlIGNvdWxkIEdD
IGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBzb21lb25lIGNvdWxkIGluc2VydCBhbiBvcGVyYXRpb24g
dGhhdCBHQ3MuCisgICAgICAgIC8vIFRoYXQncyBmaW5lIGJlY2F1c2U6CisgICAgICAgIC8vIC0g
VGhpbmdzIGFscmVhZHkgaW4gdGhlIHN0cnVjdHVyZSB3aWxsIGdldCBzY2FubmVkIGJlY2F1c2Ug
d2UgaGF2ZW4ndCBtZXNzZWQgd2l0aAorICAgICAgICAvLyAgIHRoZSBvYmplY3QgeWV0LgorICAg
ICAgICAvLyAtIFRoZSB2YWx1ZSB3ZSBhcmUgZml4aW5nIHRvIHB1dCBpcyBnb2luZyB0byBiZSBr
ZXB0IGxpdmUgYnkgT1NSIGV4aXQgaGFuZGxpbmcuIFNvCisgICAgICAgIC8vICAgaWYgdGhlIEdD
IGRvZXMgYSBjb25zZXJ2YXRpdmUgc2NhbiBoZXJlIGl0IHdpbGwgc2VlIHRoZSBuZXcgdmFsdWUu
CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgUHV0QnlPZmZzZXQs
CisgICAgICAgICAgICBPcEluZm8oZGF0YSksCisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2Us
CisgICAgICAgICAgICBiYXNlLAorICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAKKyAgICAg
ICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0ZXNTdG9yYWdlKCkpCisgICAgICAgICAgICBhZGRUb0dy
YXBoKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHksIGJhc2UsIHByb3BlcnR5U3RvcmFnZSk7
CisgICAgCisgICAgICAgIC8vIEZJWE1FOiBQdXRTdHJ1Y3R1cmUgZ29lcyBsYXN0IHVudGlsIHdl
IGZpeCBlaXRoZXIKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MjkyMSBvcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyOTI0LgorICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJ
bmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3Jh
cGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
ZGVmYXVsdDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0g
fQorfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKICAg
ICBjbGVhckNhY2hlcygpOwpAQCAtNjA0Nyw2ICs2MTYyLDUwIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1
dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdl
dChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCB0cnlDb21waWxlQXNQdXRCeU9mZnNl
dCA9IGZhbHNlOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7
CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlk
U3RhdHVzOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAg
ICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5k
ZXgoKSkpLmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCisgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBp
bmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAorICAgICAgICAgICAg
ICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAgICAgICAgICYmICFi
eVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRl
bnQpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAg
ICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5
Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlk
ZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVy
TnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRl
bnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVu
VmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsK
KworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZv
KGZyb3plbiksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigp
LCB1aWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0KQorICAgICAgICAgICAgICAgIGhhbmRsZVB1dFBy
aXZhdGVOYW1lKGJhc2UsIHByb3BlcnR5LCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oKSwg
T3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisKKyAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcml2YXRlX25hbWUpOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWZpbmVEYXRhUHJvcGVydHk+
KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CkBAIC04
MjYwLDcgKzg0MTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRl
Y29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChi
YXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QsIG9zckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKKyAgICAgICAgICAg
IGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpOwogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTgyNzEsNyAr
ODQzMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20g
Zm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAv
LyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJn
LCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUu
YXNXb3JkKCkpLCBPcEluZm8oZWNtYU1vZGUoYnl0ZWNvZGUpKSk7CisgICAgICAgIGFkZFRvR3Jh
cGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9w
SW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwog
ICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3Qg
bXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1
cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMWM2YzY2ZjgwMjM1Y2Y5Njll
YmIyMzE2MTkzY2Q4MzQ3MGQ4YzQzNS4uYWQ5ZjI0YzUwODY2OGYwNDRkNDU1MzJiZTM2NWQzMTU3
NTk4ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2Fz
ZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6
CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVf
bmFtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9w
X3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8g
Y29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODUyMDBkNWRhZjFkZWU4ZTkwZmU4MTQx
ZGJiMWNjYmQ5YjUzMzdlZS4uNzAwMTZjY2U4MDdkYWU2MDg5MmZkNzhmZWU4ZjFjMjM1YThiOTll
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY2Niw2
ICs2NjYsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0R2V0dGVyU2V0
dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlW
YWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0
eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAppbmRleCBiOTdhMjQzZmMxYzczMzVhNDA1ZDY4ZTQ1ZDQ5YTMyYzI4MThmMWMw
Li4wNTRiOWNlYzI3OTliNjg2YWM5MWI0MmJhNTRjODU1YTI0NzMxZjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApA
QCAtNjU4LDEwMiArNjU4LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1dFByaXZh
dGVOYW1lOiB7CisgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgCisKKyAgICAg
ICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0cnlGb2xk
QXNQdXRCeU9mZnNldChub2RlLCBpbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5j
aGlsZDMoKSwgaXNEaXJlY3QsIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVkKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgog
ICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRCeUlk
Rmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdp
bjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwotICAg
ICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUoKTsKLSAgICAgICAgICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZEVk
Z2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGNoaWxkKTsKLSAg
ICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVj
dHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVj
dCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIEFTU0VSVChzdGF0dXMubnVtVmFy
aWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPiAx
ICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAgICAgICAgICAgICAgVHJhbnNpdGlvblZlY3Rv
ciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50
JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFudC5jb25k
aXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hD
b25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25k
aXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVy
ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tT
dHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcElu
Zm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25k
aXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1
dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0
aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2
YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdl
IGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZGlk
Rm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2
ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOwotICAgICAgICAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5nZVN0cnVjdHVyZShtX2dy
YXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9
IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0
aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJ
ZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAotICAgICAgICAgICAgICAg
ICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlk
KTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSkgewotICAg
ICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNl
VmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAgICAgICAgICAgIE11bHRpUHV0QnlPZmZzZXRE
YXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFkZCgpOwotICAgICAg
ICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlhbnRzKCk7Ci0gICAgICAgICAg
ICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChkYXRhKTsKKyAgICAgICAg
ICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0OworICAg
ICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9k
ZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgY2hhbmdlZCwgYWxyZWFkeUhh
bmRsZWQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0xNDY5
LDYgKzEzODcsOTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lk
IHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KE5vZGUqIG5vZGUsIHVuc2lnbmVkIGluZGV4SW5CbG9jaywg
RWRnZSBiYXNlRWRnZSwgRWRnZSB2YWx1ZUVkZ2UsIGJvb2wgaXNEaXJlY3QsIGJvb2wmIGNoYW5n
ZWQsIGJvb2wmIGFscmVhZHlIYW5kbGVkKQorICAgIHsKKyAgICAgICAgTm9kZU9yaWdpbiBvcmln
aW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgIE5vZGUqIGJhc2VOb2RlID0gYmFzZUVkZ2Uubm9k
ZSgpOworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnVpZCgpOworCisgICAgICAgIEFTU0VSVChiYXNlRWRnZS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlVmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUoYmFzZU5vZGUpOworICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBtX3N0
YXRlLmZvck5vZGUodmFsdWVFZGdlKTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5tX3N0cnVj
dHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFB1dEJ5SWRT
dGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICBiYXNl
VmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKKyAgICAgICAgICAgIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwKKyAgICAgICAgICAgIGlzRGlyZWN0KTsKKworICAg
ICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIEFTU0VSVChzdGF0dXMubnVtVmFyaWFudHMoKSk7CisKKyAgICAgICAgaWYgKHN0YXR1cy5u
dW1WYXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAgVHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9u
czsKKyAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52
YXJpYW50cygpKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiBjb25kaXRpb24gOiB2YXJpYW50LmNvbmRpdGlvblNldCgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKG1fZ3JhcGgubV92bSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVyZSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKSwKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgY29uZGl0aW9uLm9iamVj
dCgpLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7CisgICAgICAgICAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIHRyYW5z
aXRpb25zLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1
Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBu
ZXdTZXQuYWRkKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7
CisgICAgICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJl
Zm9yZS4KKyAgICAgICAgbV9pbnRlcnByZXRlci5kaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAg
ICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNp
dGlvbnMpOworICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5jaGFuZ2VTdHJ1
Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQorICAgICAgICAgICAgbV9z
dGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKworICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7
IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3Mg
dG8gdGhpcy4KKworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1cywgbm9kZS0+b3Jp
Z2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRQdXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgc3RhdHVzKSksCisgICAg
ICAgICAgICBFZGdlKGJhc2VOb2RlKSk7CisKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAgICAgICAgaWYgKHN0
YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChp
bmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fcGxhbi5pc0ZUTCgpKTsKKworICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0
YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+
dmFyaWFudHMgPSBzdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51
bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIG5vZGUtPmNvbnZlcnRUb011bHRpUHV0
QnlPZmZzZXQoZGF0YSk7CisgICAgfQorCiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0
ZTsKICAgICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVy
cHJldGVyOwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3M2M3OGUzNzViOTg5ZWVkZTFmYmNiZmQxM2Zk
NDZkN2VkMGYyZTIwLi45MDQ4NWYwYmJiNDc1YzRjOWJlMTM1NTc5OGI1NjA2NmViMjkwOTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0
dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0
ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgIGNhc2UgUHV0U3RhY2s6CiAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA5MGU5YjEzNGVlYTAyMTg5
NzQzY2YxNDFhN2Q5YTZmMmU3MTZiMDQzLi42YThhNDYzYTBjMjQ5ZWE5MDk0Zjk4ZjRmODg5Yjhj
ZjZjYmQ2YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKQEAgLTE4OTcsNiArMTg5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJv
bWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRl
QXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGNh
c2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCBkZDBkMTJkYWY4ZDlhMTljNDE4YTBkYzNkNDkxY2NiNzAwNDRhZWY3Li4yMzU1M2E2
MGRmMGQ3N2VmNmU1NjQwYzczMGRiMTkyM2U1YjQ3MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50Lmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVk
ZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAj
aW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKQEAg
LTYxNSw5ICs2MTYsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRvUHV0QnlP
ZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWRE
aXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0
KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJl
Y3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8
IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWUpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwotICAg
ICAgICBjaGlsZHJlbi5zZXRDaGlsZDMoY2hpbGRyZW4uY2hpbGQyKCkpOworICAgICAgICBpZiAo
bV9vcCAhPSBQdXRQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMyhj
aGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMihiYXNlKTsKICAg
ICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKHN0b3JhZ2UpOwogICAgICAgICBtX29wID0gUHV0QnlP
ZmZzZXQ7CkBAIC02MjUsOCArNjI3LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZl
cnRUb011bHRpUHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8
fCBtX29wID09IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQg
fHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3Ag
PT0gUHV0UHJpdmF0ZU5hbWUpOwogICAgICAgICBtX29wSW5mbyA9IGRhdGE7CisgICAgICAgIGlm
IChtX29wID09IFB1dFByaXZhdGVOYW1lKQorICAgICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQy
KGNoaWxkcmVuLmNoaWxkMygpKTsKICAgICAgICAgbV9vcCA9IE11bHRpUHV0QnlPZmZzZXQ7CiAg
ICAgfQogICAgIApAQCAtMTA4OSw2ICsxMDkzLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1
dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1
dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjI3MSwxMyArMjI3NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gRUNN
QU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkpOwogICAgICAgICBjYXNlIERl
bGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0
aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlh
czoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgY2FzZSBQdXREeW5hbWlj
VmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgICAgICByZXR1cm4gRUNN
QU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90PigpKTsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjg1LDYg
KzIyOTAsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFz
UHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2
YXRlTmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAg
ICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRl
RmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisKICAgICBib29sIGhhc0FyaXRoTW9kZSgpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCBlMmM0OGFlZTVmMGRhOTI4YmE5NDA1OGUxNDFjM2U1ZWQ3Y2U0NTZm
Li5mN2I3NjQ3ODczYzY4NTY1NGVkOTg1MjZjZmE3MTNiYmZkNjY3MWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDksNiArMjA5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0LCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbCwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWxBbGlhcywg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oUHV0UHJpdmF0
ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCAwZTRjMzFi
ZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1OWIyYWUwYWMzNTk3ZDlk
NWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkhlYXBDZWxsLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgT3BJ
bmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVlKG9wLmFzQml0
cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygp
KSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUo
ZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkgeyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCogcHRyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAppbmRleCA3MTAzZjlkYjkwYmRiN2YzNTA1ZmRjMTIzNDlkMmJmZDc2ZDRmMmYx
Li4wNWY2NWYzODhiOWYyNGIyZTkwZjZkODEzMWY0YTkxODAxYzljMTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcApAQCAtMTM3Niw2ICsxMzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAg
Y2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKICAgICAgICAgY2Fz
ZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDA0MGQzZjNjYzhkNGI0MTk3NzJjOWExYWQ2OGI2ZTRiZDkyMzc5
MWYuLmRlMTY3ZTUzMmI1ZjljYWZkNWMzYjhhMzI1OWQ5YzNmYzg2YmIzM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjUsNiArNTI1LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6
CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAg
Y2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGY0NmI0
MTg3OTliOGUzNGI3NzYwMTZhOTllMGI2NDg3NzdlZDQxZDMuLjgxZDVhOTI3NWQ0ZWU1ZDhjZjlj
NGFmMDRmYjJkZGE4ZGZlMDE2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0LDYgKzM1MjQsMzIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICBp
ZiAobm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKSB7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CisKKyAgICAgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRp
b24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICAg
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICB9IGVsc2Ug
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5VmFsdWUu
anNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0
aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5l
cmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICB9CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2Rl
KQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtMTI3MjQsNyArMTI3NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgUHJpdmF0ZUZpZWxk
UHV0S2luZDo6bm9uZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjczOSw3ICsxMjc2NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFs
dWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNj
cmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIFByaXZh
dGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEy
NzU0LDcgKzEyNzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJl
Y3QoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNh
Y2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNj
cmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgRGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERp
cmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKIAog
ICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQzODQsNyArMTQ0MTAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0
S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVGaWVs
ZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2Rl
ID09IERvbnRTcGlsbCkgewpAQCAtMTQzOTYsNyArMTQ0MjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIs
CiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAot
ICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBwcml2
YXRlRmllbGRQdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDY2
MjVkNjM5NmE1ZWVkZWFmZWQ1NmM2NDBmYTg3OWZjNGUxMWNjYTcuLjdmZGI4OGFmOWUwMWFlMTM2
MjJmZjhkMGE4MTcyMzM4MjFjOTRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcyMCw3ICs3MjAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21waWxlQ2hlY2tOZXV0ZXJlZChOb2RlKik7CiAKICAgICB2b2lkIGNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJz
TW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBQcml2YXRlRmllbGRQdXRL
aW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1w
KCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdl
dEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsK
IAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMzYwLDYgKzEzNjAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiwgRWRnZSYgY2hpbGQx
LCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2Um
IGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7CisgICAg
dm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5
T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOGE5NWRmNTUy
ODQ2YWE2NGRiZmUzYTY0YzZjMzc1MzRhYjg0OTE0MC4uNzIwOWVkOWFkNTVmZDEzNWZmYzc0Yzk2
OWE3NDBiNWY3MzgxMDRjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTk2LDYgKzI1OTYsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERp
cmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggMzI1NjYwZTUzNWQ5NWI0MDVhNTFkZWRhYmNkZTYzNmI1ZTRlZTAyMC4uZWQyODE4MjE4ZjIz
NTQ3MWMzMDA0OTU2MWExNGE4NTVkZjcxMzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yOTE5LDYgKzI5MTksMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQ
cml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRC
eVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCAwNzE1M2I4ZTQ3MTJmNjgyOWI2ZWJjNjMyMTc0
NjZmODNkNDZjMWM0Li4wMTczMDFjNDdmNDA3NmI1Y2MzYjMxMmI2OThiNjY3ZTA1NDdkNjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjY2LDYgKzI2NiwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICAgICAgICAgIC8vIFdlIGVt
aXQgSUMgY29kZSB3aGVuIHdlIGhhdmUgYSBub24tbnVsbCBjYWNoZWFibGVJZGVudGlmaWVyIGFu
ZCB3ZSBuZWVkIHRvIGludHJvZHVjZSBhCisgICAgICAgICAgICAgICAgLy8gYmFycmllciBmb3Ig
aXQuIE9uIGdlbmVyaWMgY2FzZSwgd2UgcGVyZm9ybSBzdG9yZSBiYXJyaWVyIGR1cmluZyBzbG93
IHBhdGggZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAg
ICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5NmE3ZjE2NDE0NjBhNTJlODI2ZTVjOTM3Y2Zj
ZDg1NGQzOWJkNDJlLi45NWI1YTNkNWVjYmI5OGQzYjQ4YWY0ZDJhNGI5NzA3MzExNGUzYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0z
OTMsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAg
Y2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAg
IGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggZTc4OTJhYzZjMjBlOTY3NThiNDMzM2RkNmY1M2M1NWRm
YmUyY2FhMS4uZjUxNGFkMTU5N2I4NTJiNjY1YTg0MjhlMWFmMWU1ODQ4NDEyMWNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxOCw2
ICsxMDE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGlsZVB1dFByaXZh
dGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgog
ICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNo
YW5nZToKQEAgLTM5NDMsNiArMzk0NiwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwog
ICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisgICAgeworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMygpKTsKKworICAgICAgICBpZiAobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkp
IHsKKyAgICAgICAgICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5l
cmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCisgICAgICAgICAgICAvLyB0byBjaGVjayBpdCBoZXJl
LgorICAgICAgICAgICAgY2FjaGVkUHV0QnlJZChtX25vZGUsIGJhc2UsIHZhbHVlLCBFQ01BTW9k
ZTo6c3RyaWN0KCksIG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQ
dXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6
IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50
UHRyKDApLCBtX291dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRl
KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CkBAIC00MTg5LDE0ICs0
MjExLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlUHV0QnlJZCgpCisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKE5vZGUqIG5vZGUsIExWYWx1ZSBi
YXNlLCBMVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5k
IHByaXZhdGVGaWVsZFB1dEtpbmQpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpOwotCi0gICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCk7CisgICAg
ICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CkBAIC00MjEyLDcgKzQyMzAsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBlY21h
TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIyNywxMSArNDI0NCwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIEpTIHNldHRlciBjYWxsIElDcyBnZW5lcmF0
ZWQgYnkgdGhlIFB1dEJ5SWQgSUMgd2lsbCBuZWVkIHRoaXMuCiAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxT
aXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+b3AoKSA9
PSBQdXRCeUlkRGlyZWN0IHx8IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgPyBEaXJlY3Qg
OiBOb3REaXJlY3Q7CiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0
QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhw
YXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21h
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHV0S2luZCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTQyNTksNiArNDI3
NywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0p
OwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHsKKyAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENl
bGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKworICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgY2FjaGVkUHV0QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwg
UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlR2V0QnV0dGVyZmx5KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNM
LnJiCmluZGV4IGQ5NjU4NWIxMDU3NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUuLjczMTcx
MDA5NmNmM2UyNDk4YWU0NWRkYTI2YWE4MmU3OWNkNDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzksOSArMTM5LDkgQEAgbW9kdWxlIERTTAogI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAj
aW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDFlMWNmMDZlMzE1N2Qw
NTE0OTY1MjUwZTRiYzEzYmIxMDFlZGRjMmYuLjlhZGNmODhlOWVkNDQzMmZhNmFkZWUxNjYxMjE2
NWIxMTliOWQwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQyNSw2ICs0MjUs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX2RpcmVjdCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9w
dXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKQEAgLTU4Niw2ICs1ODcsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9kZWxfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQpAQCAtOTAxLDcgKzkwMywxMiBAQCBD
b21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgICAgICAgICAgYXV0byBub3RJbmRleEp1
bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CiAgICAgICAgICAgICBp
ZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAg
bm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkp
OwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZh
bENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCisgICAgICAgICAgICBQYXRjaGFibGVK
dW1wIHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXA7CisgICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPigpOworICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlQmFkVHlwZUp1
bXApLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0
clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKwogICAgICAgICAgICAg
YXV0byBkb25lVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5kb25lVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIG5leHRIb3RQYXRoVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5uZXh0SG90UGF0aFRhcmdldCkp
OwogICAgICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4o
YnlWYWxDb21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDUwOGFmNTBmNjFlYjMxNmZlMzMzOWE5N2Q1MGVjNTRiMTk1NmM3OTcuLmI0NWJl
M2FkNTAyNzkxNTBiNzkyNDNhMDRmZmJlYzExZjkzMWY5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBPcFB1
dEJ5VmFsOwogICAgIHN0cnVjdCBPcFB1dEJ5VmFsRGlyZWN0OworICAgIHN0cnVjdCBPcFB1dFBy
aXZhdGVOYW1lOwogICAgIHN0cnVjdCBPcFB1dFRvU2NvcGU7CiAKICAgICBzdHJ1Y3QgQ2FsbFJl
Y29yZCB7CkBAIC0xNjEsNiArMTYyLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAorICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFs
SW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6IGJ5
VmFsSW5mbyhieVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCkKKyAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAgICAg
ICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRh
cmdldChuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwpA
QCAtMjM0LDYgKzI0NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5wcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wPihieVZhbEluZm8sIHJldHVybkFkZHJl
c3MsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMg
dm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CisgICAgICAgICAgICBqaXQubV9ieXRl
Y29kZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgaml0LnBy
aXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCByZXR1cm5B
ZGRyZXNzLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB9CisKICAgICAgICAgc3RhdGljIHZvaWQg
Y29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRB
cnJheU1vZGUgYXJyYXlNb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KHZtLCBj
b2RlQmxvY2spOwpAQCAtMjU5LDYgKzI3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5VmFs
V2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hl
YWJsZUlkZW50aWZpZXIpOwogCisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRl
TmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKKwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3Bl
cnR5KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKICAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKTsKQEAgLTQwNiwxMSArNDI1LDEzIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3Mg
Zm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAg
ICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAg
IC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAg
ICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVn
aXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2Vz
KTsKIAorICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVtaXRQdXRQcml2YXRlTmFtZVdpdGhD
YWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYg
ZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKKwogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2Fz
ZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCkBAIC02MDUsNiArNjI2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wID0gT3BQdXRCeVZhbD4KICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiopOwpAQCAtNjg2LDYgKzcwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXgg
ZDhmOTViYjBmN2NmYzg5ODJiMzhlODcwZTFiYmI3YTFkNDkwZDJhMC4uYWI2YjM3NTQxZjE5Yzdm
OGRiYjcxZTRhMjgzYTU1YmM0MGQwN2RjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDEx
IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJh
dG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBD
YWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0
S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZFB1dEtpbmQg
cHJpdmF0ZUZpZWxkUHV0S2luZCkKICAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBt
X3B1dEtpbmQocHV0S2luZCkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZFB1dEtpbmQocHJp
dmF0ZUZpZWxkUHV0S2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOwogfQpAQCAtMTUyLDEwICsxNTIsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7Ci0g
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpOb25lKSB7CisgICAgaWYgKCFtX3ByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkpIHsKICAg
ICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOwogICAgICAgICBBU1NFUlQobV9lY21h
TW9kZS5pc1N0cmljdCgpKTsKLSAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9
PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgIGlmIChtX3ByaXZhdGVG
aWVsZFB1dEtpbmQuaXNEZWZpbmUoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmlu
ZGV4IDI5YzJkMmU2ZDMyOGRhOWNiMzc2MTE1ZDk5MmVhMmEyYzUwYzU5OTQuLjQyMWM0NmRlYmQ3
YWZkMDM0YzYxODM1YzliNTg5Mzk2NDVkZTZjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAK
ICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVk
ZSAiUHV0S2luZC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMSwxMiArMTMw
LDEyIEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRv
ciB7CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21h
TW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCisgICAgICAgICwgbV9wcml2YXRlRmll
bGRQdXRLaW5kKFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSkKICAgICB7IH0KIAogICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHBy
aXZhdGVBY2Nlc3MpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gs
IEVDTUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKICAgICAKICAgICB2b2lk
IGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0NSw3ICsxNDQs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0
S2luZCBtX3B1dEtpbmQ7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ7CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBtX3ByaXZhdGVGaWVsZFB1dEtp
bmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4
IDJmNzZkYjAwNjkyMTE4YWY4NTJlNzA2Mjk1MDI3NDI5OTg1YWNmYjIuLjQ1ZjdmMGM5MThjZWIz
YmRjNzQ3ZTQzZWRjZTMyNmZhMTAyZTY2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC02OTksMjEgKzY5OSwyMSBAQCBBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJ
VDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1dEJ5SWQgb3ApCiB9CiAKIHRlbXBsYXRlPD4KLUFM
V0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1
dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9w
UHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxh
Z3MuZWNtYU1vZGUoKTsKKyAgICByZXR1cm4gRUNNQU1vZGU6OnN0cmljdCgpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLVByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmll
bGRBY2Nlc3NLaW5kKE9wKQorUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVGaWVsZFB1
dEtpbmQoT3ApCiB7Ci0gICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7Cisg
ICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKIH0KIAogdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lO
TElORSBQcml2YXRlRmllbGRQdXRLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFBy
aXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1lIG9wKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdz
LnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsKKyAgICByZXR1cm4gb3AubV9wdXRLaW5kOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDFmYTY5YmEyYjI2NDBkYTA5OWFhODdlNzZkNzA5ODY1ZTAyMmJmNDQu
LjQ4ZWQxYjZmOGU1YjI1OGU1M2U5ZjZlYWEwNjkxY2IxNmYyNWE1OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTEwNSw3ICsxMTA1LDYgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLQogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMTE5LDYgKzExMTgsMTMyIEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJh
c2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpKTsKKworICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6YXRpb25S
ZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKworICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50
aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgp
KSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0
ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgeworICAgICAgICAgICAgICAg
IGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgeworICAgICAg
ICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCh2bSwg
Y29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNT
KSwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlv
blJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZW0gbGlrZSBhIGdlbmVyaWMgcHJv
cGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3Vs
dCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnlW
YWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1
YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3Vs
dCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jaywgc3Vic2NyaXB0LmFz
Q2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChvcHRp
bWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQgJiYgb3B0aW1p
emF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2UpIHsKKyAgICAgICAg
Ly8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEwIHRpbWVzIHdpdGhvdXQgcGF0Y2hp
bmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2ZXIgbWFrZSB0aGF0IG1pc3Rha2Ug
YWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZiBvcHBvcnR1bml0eQorICAg
ICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBwdXRfcHJpdmF0ZV9uYW1lIG1heSBi
ZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQgdXAgc2xvd1BhdGhDb3VudCBldmVu
IGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBpZiAoKytieVZhbEluZm8tPnNsb3dQ
YXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6
YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0
ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CisgICAgICAgIC8vIERvbid0IGV2ZXIg
dHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7
CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNEZWZpbmUoKSA/ICBvcGVyYXRpb25EZWZpbmVQ
cml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAg
IH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBj
YW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFu
ZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29s
IGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1v
ZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRl
ZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQg
d2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUg
YWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVl
OworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0
LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVO
YW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vi
c2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJU
KCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQ
cml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBz
Y29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUK
KyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2Jq
ZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgaWYgKGJ5VmFs
SW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2Rl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMzhjZDlmZDljMTRjZmQ3MzhkZDU1MDVlYzQ2
YTI3MzYzNjkwYzljYy4uY2IxZGVkMjVhMjMyMTE4ODhjZGIyZDE5Y2UzYzllMTQ1MDJhYWM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiSklUTWF0aElDRm9yd2FyZHMuaCIK
KyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhSZXR1
cm5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTE5MywxMCArMTk0LDEzIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNH
bG9iYWxPYmplCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90
KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmll
bGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2Fs
bChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
aW5kZXggYzIxYzBlNjFiZWIxNTM4YjYwYWUyYWEzMTcwYzU1MmEyM2YzNmJmZS4uZjA3OTU5NDE1
NGI3OGM3ZDgzZmExYjUwMGI2Mjc3MzA3M2YyOTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgi
CiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpAQCAtMzE2LDcgKzMxNyw3IEBAIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUs
IFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0
ZUZpZWxkUHV0S2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJp
ZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3Jp
dGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBA
IC0zNDYsNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0g
SklUOjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9l
Y21hTW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0NyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7
CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9j
ay0+YWRkQnlWYWxJbmZvKCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJl
Z1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisKKyAg
ICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNs
b3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAg
ICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5m
byhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAgIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisg
ICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdU
MTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRo
VGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0
aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3ICs3
NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVj
dCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAgICAK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKQEAgLTEzNTgsNyArMTQwMCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2lu
ZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1l
LAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRl
RmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShi
eXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZFB1dEtpbmQoYnl0ZWNvZGUpKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkp
OwogCkBAIC0xMzc3LDYgKzE0MTksMTEgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQ
dXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKIAorSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQ
cml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3Qm
IHNsb3dDYXNlcykKK3sKKyAgICByZXR1cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVj
b2RlLCBQdXRLaW5kOjpEaXJlY3QsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMp
OworfQorCiB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0ZXIgb3duZXIs
IFdyaXRlQmFycmllck1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSA9PSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSk7CkBAIC0xNDY2LDYg
KzE1MTMsNDAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIHRlbXBsYXRlIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWw+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBKSVRB
cnJheU1vZGUpOwogCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhD
YWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK3sKKyAgICBjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKworICAgIEp1bXBM
aXN0IGRvbmVDYXNlczsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbiA9IGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChieXRlY29kZSwg
cHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7CisKKyAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKnRoaXMsIG1fY29kZUJsb2NrKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYXNl
cywgYnlWYWxJbmZvLT5zbG93UGF0aFRhcmdldCk7CisgICAgcGF0Y2hCdWZmZXIubGluayhkb25l
Q2FzZXMsIGJ5VmFsSW5mby0+ZG9uZVRhcmdldCk7CisgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNr
cy5lbXB0eSgpKQorICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBi
eVZhbEluZm8tPmV4Y2VwdGlvbkhhbmRsZXIpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxs
U2l0ZSA6IG1fY2FsbHMpIHsKKyAgICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkKKyAgICAgICAg
ICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsKKyAg
ICB9CisgICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7CisKKyAgICBi
eVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKKyAgICAgICAg
bV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKKyAgICAgICAg
IkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMn
IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0Zjgo
KS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52
YWx1ZSgpKTsKKyAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CisKKyAg
ICBhdXRvIGdlbmVyaWNGdW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8g
b3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5h
bWVHZW5lcmljOworCisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihnZW5lcmljRnVuY3Rpb24pKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggMmE1ZWNjNzQy
MTQ1NTA0NzE1NzNiMDkxOThjYzE1ZWI0OTRiZmVkZC4uZWNlZTg1MWYxZWUwYjljOTczOTc2NGY1
NTE3OTJmZGQyMjI5NjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zMzEsNiArMzMxLDUwIEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlCiB9CiAKIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFs
SW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKKworICAgIGVtaXRMb2FkMihiYXNl
LCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hhYmxl
SnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0
UGF0aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1f
Ynl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1l
PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKworICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0u
YnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1f
cHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1Bh
dGggPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsK
KyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKKworICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VS
ZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKHByb3Bl
cnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpOwor
ICAgIGVtaXRMb2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFnR1BSKCksIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGJ5VmFsSW5mbywgVHJ1c3RlZElt
bTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5
VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNz
ID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOworfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOwpAQCAtNzA4LDcgKzc1Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAotICAgICAgICByZWdU
MSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICByZWdUMSwgYnl0ZWNv
ZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmlu
ZGV4IGY2MTBjMTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQxM2YuLmM4YzI2MTUyNDNh
ZDhjMGE2ZGVkZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw5ICs1OSw5
IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRl
ICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5j
bHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkNGQwOTE2ZmYy
ZDc2MTQ0MDQzYTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZlMDZlNmJhYzk3MGY1MzRi
M2RiMTI4MjM5YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0g
Ynl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0
TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlw
dC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwot
ICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
LSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0g
c3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0
QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9F
TkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3Qg
aWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlz
UHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElO
VF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgQVNT
RVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nl
c3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2Rz
IGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9
IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChi
eXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5l
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBl
bHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsKKyAgICAg
ICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZh
bHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBp
ZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxs
KCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1YnNjcmlw
dC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVD
YWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAob2xk
U3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkK
KyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkgeworICAg
ICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50
KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8g
b3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgpLT5zaGFy
ZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwo
IkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVh
cmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0YWRhdGEu
bV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIo
KTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Cisg
ICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0
cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWlu
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3UG9seVBy
b3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVy
ZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5
LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzZXJ0IGhl
bHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxlIGNhY2hp
bmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9yZSB0byBh
biBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAgICAgICAg
ICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkgYSBsYXp5
IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hp
bmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAor
ICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVj
dHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIHRy
YW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdTdHJ1
Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJz
Y3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNkZGUyNWI5
ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgzM2YzYTlj
MWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFjZWRkNGUw
MzgxNDAxNjI5Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNlZjc5OTYx
YTJhMDkwMDFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBAIG1hY3Jv
IHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkK
ICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxv
YWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdl
dChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChz
aXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmll
ck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVy
RG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxs
RmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25l
KQpAQCAtMTY5Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZh
dGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlz
cGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUs
IE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1f
dmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAg
Z2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRh
KHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1
Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0
ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBv
YmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+
IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdT
dHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisg
ICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVy
T25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAg
IyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAg
ICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAu
b3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgor
ICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRo
ZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRp
c3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3ZWJiZmFh
MzU0My4uZmFmZjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2
YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRp
c3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1l
LCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9w
ZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAu
b3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9w
UHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBi
aW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0s
IHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQg
dGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAt
PiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRp
IE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAg
ICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNp
emUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRv
IHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRv
IHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246CisgICAg
IyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJh
c2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNl
dFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikK
KyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQor
ICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5k
KQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBv
aW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAg
ICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmExMjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtp
bmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5M
LgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQucHJpbnQo
IlNldCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEwMWRiYTBk
MGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5
cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
KiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVz
cGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBT
ZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVp
bnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0
ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxk
UHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJp
dmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNO
b25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmlu
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkK
KyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUg
PT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7
CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDcwOGI1YWQzNWExMzBlYjBiZDFiZmE3NGM1OWY1OTk5Njg0OGFlMTkuLmU4ZTliOGM0MzVjYWJl
OGQ1MjFjMjdlMzkzMzE1MDhiYzZlMWM0ZDggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDgtMTQgIENh
aW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0g
Q3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3Rp
bmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVjdXRpb24g
aW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUt
bmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmct
dG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVk
LXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1vc3IuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRp
Zmllci5qczogQWRkZWQuCisKIDIwMjAtMDgtMDcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVnRXhwIHN0aWNreSBub3QgbWF0Y2hpbmcgYWx0ZXJuYXRl
cyBjb3JyZWN0bHksIGlnbm9yaW5nIGxhc3RJbmRleCByZXF1aXJlbWVudApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRp
b24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVy
LWluc2VydGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjVlNjMwNTU3OGRlZjY4YjRlMjZmZmY4ZTcxY2Y5
ZTBiOTQ4ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2
YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMKQEAgLTAsMCArMSw2OSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlz
dFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbihhLCBl
KSB7CisgICAgICAgIGlmIChhICE9PSBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czog
ZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlv
bjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
dGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBi
dXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsK
KworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgewor
ICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkg
PSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09
PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9
PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlz
WyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb2xkT2JqZWN0
ID0gbmV3IEM7Citmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDUwMDApIHsK
KyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoaSA9PSA1MDAwKQorICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAg
b2xkT2JqZWN0LnNldEZpZWxkKHtwcm9wOiBpfSk7CisgICAgICAgIGVkZW5HQygpOworICAgICAg
ICBhc3NlcnQuc2FtZVZhbHVlKG9sZE9iamVjdC5nZXRGaWVsZCgpLnByb3AsIGkpOworICAgIH0K
K30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29t
cGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNl
YzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1p
ZC1kaXJlY3QuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAi
LS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAg
bGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rvcigp
OworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAo
IWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dz
OiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0K
K30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsK
KworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisK
KyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7Cisg
ICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKwor
ICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsK
KyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0
RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBs
ZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30p
OworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xk
aW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjAyZmFhODkxYWU0MTQwMWVlYWNmZGFlZDgzNWY0ZTQyZGY0ZTVlNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10
by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSw1NyBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiLCAiLS11c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDA7Cits
ZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitsZXQgY29uc3RydWN0RGlmZmVyZW50ID0g
ZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQo
KSB7CisgICAgICAgIGlmIChjb25zdHJ1Y3REaWZmZXJlbnQpCisgICAgICAgICAgICB0aGlzLmZv
byA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1ldGhvZChqLCBvdGhlcikg
eworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGxldCBvYmogPSB0aGlzOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKysp
CisgICAgICAgICAgICBjKys7CisgICAgICAgIGlmIChqICUgMikgeworICAgICAgICAgICAgb3Ro
ZXIuZm9vID0gajsKKyAgICAgICAgICAgIG9iaiA9IG90aGVyOworICAgICAgICB9CisgICAgICAg
IG9iai4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUubWV0aG9kKTsK
K25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IG90aGVyQyA9IG5ldyBD
KCk7CisKK2NvbnN0cnVjdERpZmZlcmVudCA9IHRydWU7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MzA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZChpLCBvdGhlckMp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNv
bXBpbGF0aW9uID0gdHJ1ZQorbGV0IGMgPSBuZXcgQygpOworYy5tZXRob2QoMCwgb3RoZXJDKTsK
K2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1
dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50
LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzIwZWM4MDRhOTRmNzFl
MzU4ZWE3YWFlNmE2ZmU4ZGVlMjU4NTUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMK
QEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRU
aWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJ
bmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBp
dGVyYXRpb25zID0gMTAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitjbGFz
cyBDIHsKKyAgICAjZmllbGQgPSAwOworCisgICAgbWV0aG9kKCkgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0
ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBj
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9
IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgYy5tZXRob2Qo
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJD
b21waWxhdGlvbiA9IHRydWUKK2MubWV0aG9kKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0Rmll
bGQoKSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2Vu
ZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2MjcwYmFiY2EzZDAwN2I3YTc4MzA5NzcyNzk0
ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1n
ZW5lcmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAg
aWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSAr
ICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlv
bihkeW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gdGhp
cy5pbml0KCk7CisgICAgCisgICAgICAgIGluaXQoKSB7CisgICAgICAgICAgICB0aGlzW2R5bmFt
aWNQcm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICBzZXRG
aWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKworICAg
ICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBu
b0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBD
OworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3BlcnR5
JyArIGkpOworICAgIGxldCBjID0gbmV3IENsYXNzKCk7CisgICAgYy5zZXRGaWVsZCgndGVzdCcp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOTU5OGU3MDE5ZDM3NGQ2MGFhOWQ3Y2RhOWNmNTQyYjcxNjdmM2I0Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmlu
ZS5qcwpAQCAtMCwwICsxLDY0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRp
b24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBm
YWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlv
bi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRo
b3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZE92ZXJyaWRlUmV0dXJuID0g
ZmFsc2U7CitsZXQgb2JqOworCitjbGFzcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgaWYgKHNob3VsZE92ZXJyaWRlUmV0dXJuKQorICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICNm
aWVsZCA9ICd0ZXN0JzsKKworICBnZXRGaWVsZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLiNmaWVs
ZDsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBp
ZiAoaSA+IDEwMDApIHsKKyAgICAgIHNob3VsZE92ZXJyaWRlUmV0dXJuID0gdHJ1ZTsKKyAgICAg
IG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1
ZShDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKG9iaiksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQu
c2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgbmV3IEMoKTsKKyAgICAg
IH0pOworICB9IGVsc2UgeworICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcg
QygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAg
ICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgYy5nZXRG
aWVsZC5jYWxsKG9iaik7CisgICAgICB9KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDdjZWE2MDAw
NWE5YjVmODY4YTBiNTNiZjIxZDc1YzI0ZmJiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKQEAgLTAsMCArMSw1MCBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAg
ICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRo
cm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAg
ICB9Cit9CisKK2xldCBzaG91bGRTdG9yZSA9IGZhbHNlOworCitmdW5jdGlvbiBmb28oKSB7Cisg
IGNsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgICNmb287CisKKyAgICBp
bml0KCkgeworICAgICAgaWYgKHNob3VsZFN0b3JlKQorICAgICAgICB0aGlzLiNmb28gPSAxMjsK
KyAgICB9CisgIH0KKworICByZXR1cm4gbmV3IEMoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICBz
aG91bGRTdG9yZSA9IHRydWU7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkg
PT4geworICAgICAgZm9vKCk7CisgICAgfSk7CisgIH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0K
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzMxNGZhOWU3MDQ5ZjFiODBiMDJmYzBhNzE5NTQ3ZTdhMjFkYjkwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRl
LWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAg
dGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3
RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFu
Y2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5u
YW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAn
dGVzdCc7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2Zp
ZWxkID0gdjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3Mo
KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMu
c2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
J2ZvbycgKyBpKTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5l
dyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAndGVzdCcpOworYzIuc2V0
RmllbGQoJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAnZm9vJyk7CisK
K2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICBjLnNldEZpZWxkLmNhbGwoYzIsICd0ZXN0Jyk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICBjMi5zZXRGaWVsZC5jYWxsKGMsICd0ZXN0Jyk7Cit9KTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY5NWExYWRl
Mzc2OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVjMmRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCits
ZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAg
aW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVy
dHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3Ig
KDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1w
b2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2NGNh
OWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJv
bC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNv
dW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxs
b3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVs
ZCA9ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxk
KCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1k
aWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNs
YXNzRGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAK
KyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
ICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4j
ZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisK
KyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0g
Y2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMx
IDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407222</attachid>
            <date>2020-08-25 13:11:05 -0700</date>
            <delta_ts>2020-08-28 09:15:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200825171101.patch</filename>
            <type>text/plain</type>
            <size>151066</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2JhMTBmZGY1Y2Y4M2JkZTA3OGE5ZjdmMGZmNDlhMDg5YTZiZDU1Li42NWQzZThhYjYxYmQxOTZm
ZTVmZDA4NGRhODQ4MGViMzVjMmJlZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzAgQEAKKzIwMjAtMDgtMjUgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OmVj
bWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAg
ICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6
ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5T2Zmc2V0KToK
KyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0Mp
OgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5
SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJ
ZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGlu
ayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9u
SW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93
UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9k
ZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0
S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZh
dGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5h
bWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6Cisg
ICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5k
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5l
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDgtMjUgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFy
bHkgZXJyb3IgZm9yIG9iamVjdCBsaXRlcmFsIG1ldGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkzMTU5YWZiODU4NGQ4OTQwZWQ1ZDVi
M2YyN2EzNDQzZThmMDhkMzIuLjgwMGRlZjRhYTllYzI2OTdhNTA0MWI4MGRmMDhlNzEwODYyMzUy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0Nyw3ICs1NDcsNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVj
b2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0
ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAg
ICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtOTcxLDYgKzk3MCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9PcHRpb25zLmgK
ICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1lL1BhcnNlSW50LmgKKyAgICBy
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaAogICAgIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaAog
ICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzY4OTU1ZjIyZGUyZjI2
Mjc4NmU3ZTY4MTNhMjQwOGI4ODdlODlkZi4uNzBjZDczNTlmY2U4NTVmNTAxMmJmZDE4ZTg1OTk5
NDlkNDYyNzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTUsNyArMTI1
NSw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYz
IC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAx
NTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0
ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAv
KiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZBMzc1
OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2NCw2ICsxMjYzLDcgQEAKIAkJODZBREQxNDUw
RkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJN
djdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVB
OTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2Qjg2
OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNz
ZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VF
MDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00MTUyLDggKzQxNTIsNiBAQAogCQk4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNw
cDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBh
dHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2NDUwQjAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgw
RjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRo
ID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxNzMsNiArNDE3MSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8q
IFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0MkEx
NDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjIyLDYgKzc2MjIsOCBAQAogCQkJCTM3Qzcz
OEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovLAogCQkJCUNFMjBCRDAyMjM3RDNB
RDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwICovLAog
CQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuaCAqLywKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFt
RXhlY3V0YWJsZS5oICovLApAQCAtODQ5Myw4ICs4NDk1LDYgQEAKIAkJCQkwRjkzMzI5QTE0Q0E3
REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAw
MTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0JCQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKQEAgLTEwMjI5LDYgKzEwMjI5LDcgQEAKIAkJCQlDRTIwQkQwNzIzN0Qz
RTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAwOUUgLyogUHJldmVudENvbGxlY3Rp
b25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8q
IFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1NUYy
ODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTBBQUVF
MUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMjY5LDcgKzEwMjcwLDYgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0
QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYg
LyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAw
MTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZFODIz
NDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
Q0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGVkM2E4ZDFiNTE0
MzdiNWRhZGNkMjk1ZjczMmMwZDlhMzNmZDA0NmUuLjQ1NWNiYjk0MGMxMjU4N2M0OGM4YmFjYzQ1
N2QxZmVhMmU3ZWU5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OSw3ICsy
NjksNiBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJ
ZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRW
YXJpYW50LmNwcAotYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwCkBAIC05NDMsNiArOTQyLDcgQEAgcnVudGltZS9PYmplY3RUb1N0cmlu
Z0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
IHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enpl
ckFnZW50LmNwcAorcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDJhZjk3NTc3MzIzOWRkMDhkNDkzNDM3NmIyMGI2MzIz
ZGQ0YmU1YzEuLjQxYWQ3ZjRiNzRhZDcyNTVkZDUxNjBhYzc3YmI2YzgwM2EzZTljMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDYs
MTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJlc3Vs
dFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwKICAg
ICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQ
dXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAg
IDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTc0LDYgKzU3NCwyMCBAQCBvcCA6
Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxd
LAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAgICBi
YXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFByaXZh
dGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1
Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlND
ZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6
IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAg
ICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01OTksNyArNjEzLDcgQEAgb3AgOnB1dF9i
eV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHBy
b3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNNQU1v
ZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwCmluZGV4IDdhNmM0YTQzN2NiZmRiODZmZjZkZmU3M2FhNGQ2MzBkODk0MTYyZmYu
Ljg3MzFmNzJjZWY1OGM0OGFlZGYzYTNmZjk2NWE4MGEzYzdhYzk3ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI3LDYg
KzIyNyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVn
aXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0b3JH
ZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFz
ZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkK
KyAgICBVU0VTKE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAgICBV
U0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0lu
c3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFu
Y2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTM5NSw2ICszOTYsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydQogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBvcF9w
dXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBvcF9w
dXRfcHJpdmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNh
c2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDZiNWE5MDJkOGEzZDc3ZDQyNjk1OTBlNTMwODkxYWMyNmQ3MjExZjAuLmZkNGY2NDA4
ODZmMjgwZTljYzA1ODQyZWVlYzNjNmE3OGVkMjNmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01NDIsNiArNTQyLDcgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEluQnlWYWwpCiAgICAgICAgIExJTksoT3BQ
dXRCeVZhbCkKICAgICAgICAgTElOSyhPcFB1dEJ5VmFsRGlyZWN0KQorICAgICAgICBMSU5LKE9w
UHV0UHJpdmF0ZU5hbWUpCiAKICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5L
KE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTExMzYsNiArMTEzNywyNSBAQCB2b2lkIENvZGVCbG9j
azo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZp
c2l0b3ImIHZpcwogICAgICAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVj
dHVyZSkpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3
U3RydWN0dXJlKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0
dXJlSUQ7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJl
SUQgfHwgIW5ld1N0cnVjdHVyZUlEKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQo
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGlm
ICghdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0KKyAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlE
KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9CisgICAgICAgICAg
ICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7
CisgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkKKyAg
ICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUp
OworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzMDIsNiArMTMyMiwy
MiBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCisg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgSlNDZWxsKiBw
cm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICBpZiAoKCFv
bGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghcHJvcGVydHkg
fHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgJiYgKCFuZXdT
dHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50
IHB1dF9wcml2YXRlX25hbWUgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwor
ICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BUb1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAg
ICAgIGlmICghbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2Vk
KHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmgKaW5kZXggMzlmZWUwYTY2OWEyODI2NTg1YTJhNDkyMmEzODJiZjZiOGEwYWFlMy4u
ZTA1YTI1NjQ4YTEzYjA1OTcyZjY2NGMzN2RlMDhjZDNjODk0OTU5NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKKyNp
bmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRl
Y29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZh
bEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxl
T3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0yNTgsNDYg
KzI1OCw2IEBAIHN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4gewogICAgIH0KIH07CiAK
LXRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNp
emU+IHsKLSAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6
dW5zaWduZWRUeXBlOwotCi0gICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBh
IDIgYml0IGVudW0sIGVuY29kZWQgYXM6Ci0gICAgLy8gICAgICAgICAgaXNTdHJpY3QKLSAgICAv
LyAgICAgICAgICAgICB2Ci0gICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKLSAgICAv
LyAgICAgICAgICAgXgotICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25l
LCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGly
ZWN0Qml0ID0gMTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsK
LSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0g
MTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hp
ZnQgPSAyOwotCi0gICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZl
cnQoUHV0QnlWYWxGbGFncyBmbGFncykKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKLSAgICAgICAgYXV0byBpc1N0
cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7
Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7Ci0gICAgICAgIHJldHVybiAocHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAo
aXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHV0QnlWYWxG
bGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVj
dCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwotICAgICAgICBhdXRv
IGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7Ci0gICAg
ICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdw
aSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZFNoaWZ0KTsKLSAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6
OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgICAgICByZXR1cm4gYWNjZXNzID09
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPwotICAgICAgICAgICAgaXNEaXJlY3QgPyBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3Jl
YXRlKGVjbWFNb2RlKSA6Ci0gICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2Rl
KSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSk7Ci0g
ICAgfQotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0
IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6
OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtNDI3LDQgKzM4NywyNCBAQCBzdHJ1Y3Qg
Rml0czxFQ01BTW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CiAgICAg
fQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHJpdmF0ZUZp
ZWxkUHV0S2luZCwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CisgICAgdXNp
bmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhQ
cml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6
Y2hlY2socHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFz
ZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0KHB1dE1vZGUudmFsdWUoKSk7CisgICAgfQor
CisgICAgc3RhdGljIFByaXZhdGVGaWVsZFB1dEtpbmQgY29udmVydCh0eXBlbmFtZSBCYXNlOjpU
YXJnZXRUeXBlIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0
S2luZDo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChwdXRNb2RlKSk7CisgICAgfQorfTsKKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2Qw
ZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdz
LmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKLXsKLSAgICBDb21tYVByaW50ZXIg
Y29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJlY3QoKSkKLSAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0g
ICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtQdXQiKTsKLSAgICBpZiAoZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0
ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIzODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
RUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgOiB1aW50OF90IHsKLSAg
ICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdz
IHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVD
TUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFs
c2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMg
dGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKLSAgICAv
LyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0
QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChFQ01B
TW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0
ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQdXRQcml2YXRlRmllbGQoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRGlyZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9u
ZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0OyB9Ci0gICAg
Ym9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7IH0KLQotcHJpdmF0ZToK
LQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVj
bWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCi0gICAgICAgICwgbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHByIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFN
b2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAg
ewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmlu
dFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQdXRCeVZh
bEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZi
MTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRmNmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYgKzI3LDYgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQ
cml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVGaWVsZFB1dCB9OworZW51bSBQdXRLaW5k
IHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZhdGVGaWVsZERlZmluZSwgRGlyZWN0UHJp
dmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCA1MzZiNzMwZWNjNWM0NzQ1MjdlMGVmZTQxMmRkNzRkNWY0OTcyM2EzLi4yZTUwZWEyNWYwNDMw
OGE1NjIxMjNlYTVjYTIyYmUyMDk1MjUwMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2Nr
LmgiCkBAIC0yNzI0LDcgKzI3MjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ4LDEzICsyNzQ5LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNp
Z25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0
ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFN
b2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5
LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHks
IHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkp
OworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVl
LCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKaW5kZXggNzA4MzFiOWI4NTEzM2U5ZmM4YjRiOWYwY2I0M2ZlNTFiZDRk
Y2MzMy4uNGM5OTVkMTYyYzZiZTg5M2JmODYwZWJiMmIyOWM1ZWUyZWE1NzJmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtNDAzNCwxNyArNDAzNCwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1l
OiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQ
dXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0g
bm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5h
bWU7CiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0
cnVjdHVyZVNldCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS51aWQoKSwKLSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwor
ICAgICAgICAgICAgICAgIGlzRGlyZWN0KTsKIAogICAgICAgICAgICAgYm9vbCBhbGxHb29kID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyY2Q0OWZkYWMx
YTUwMzQyZTE5ZGJhOWM2ZGZiNmI0ZjM2MGNjNzRiLi5jODliZmQzZTgwZGEzY2Y5ZjdhZWM2NzBh
Mjk2OGQyOGJlMGFjODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VK
dW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRl
ICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAi
UHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTI1
Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0
QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2RlSW5kZXggb3NyRXhp
dEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZhdGVOYW1lKAorICAg
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsIFByaXZhdGVGaWVsZFB1
dEtpbmQpOworCiAgICAgdm9pZCBoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7CiAgICAgCkBA
IC0xMjY3LDE4ICsxMjcwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JF
eGl0cyB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFN
b2RlIGVjbWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5t
X2VjbWFNb2RlOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFN
b2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAg
cmV0dXJuIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0KLQogQmFzaWNCbG9jayogQnl0
ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCkKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC01MDEyLDYgKzUwMDMs
MTMwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfSB9CiB9CiAK
K3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFByaXZhdGVOYW1lKAorICAgIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsCisgICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1
cywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQoreworICAgIGlmICgh
cHV0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkg
fHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgaWYgKCFwdXRCeUlk
U3RhdHVzLmlzU2V0KCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciks
IE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAx
KSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVz
Lm1ha2VzQ2FsbHMoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygp
ID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmll
ciksIE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV9n
cmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+
bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAKKyAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1
dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA6IHZhcmlhbnQub2xkU3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQu
a2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9
IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlQdXRCeU9mZnNl
dCwgT3BJbmZvKGRhdGEpLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgQVNTRVJUKHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBj
b25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IHB1dEJ5SWRTdGF0dXNbMF07CisgICAgCisg
ICAgc3dpdGNoICh2YXJpYW50LmtpbmQoKSkgeworICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJl
cGxhY2U6IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgCisgICAgICAgIHN0b3JlKGJhc2UsIGlk
ZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1f
Z3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCkt
Pm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBBU1NFUlQocHJp
dmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAg
ICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgCisgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRy
YW5zaXRpb24oKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7
CisgICAgCisgICAgICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgVHJhbnNpdGlv
biogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgICAgICBt
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlv
bigpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7
CisgICAgCisgICAgICAgIGlmICh2YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7CisgICAg
ICAgICAgICAvLyBJZiB3ZSdyZSBncm93aW5nIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIHRoZW4gaXQg
bXVzdCBiZSBiZWNhdXNlIHdlJ3JlCisgICAgICAgICAgICAvLyBzdG9yaW5nIGludG8gdGhlIG91
dC1vZi1saW5lIHN0b3JhZ2UuCisgICAgICAgICAgICBBU1NFUlQoIWlzSW5saW5lT2Zmc2V0KHZh
cmlhbnQub2Zmc2V0KCkpKTsKKyAgICAKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5vbGRTdHJ1
Y3R1cmVGb3JUcmFuc2l0aW9uKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9H
cmFwaCgKKyAgICAgICAgICAgICAgICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJ
bmZvKHRyYW5zaXRpb24pLAorICAgICAgICAgICAgICAgICAgICBiYXNlLCBhZGRUb0dyYXBoKEdl
dEJ1dHRlcmZseSwgYmFzZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGJhc2Up
OworICAgICAgICB9CisgICAgCisgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhKiBkYXRhID0gbV9n
cmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5vZmZzZXQgPSB2
YXJpYW50Lm9mZnNldCgpOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRp
Zmllck51bWJlcjsKKyAgICAgICAgCisgICAgICAgIC8vIE5PVEU6IFdlIGNvdWxkIEdDIGF0IHRo
aXMgcG9pbnQgYmVjYXVzZSBzb21lb25lIGNvdWxkIGluc2VydCBhbiBvcGVyYXRpb24gdGhhdCBH
Q3MuCisgICAgICAgIC8vIFRoYXQncyBmaW5lIGJlY2F1c2U6CisgICAgICAgIC8vIC0gVGhpbmdz
IGFscmVhZHkgaW4gdGhlIHN0cnVjdHVyZSB3aWxsIGdldCBzY2FubmVkIGJlY2F1c2Ugd2UgaGF2
ZW4ndCBtZXNzZWQgd2l0aAorICAgICAgICAvLyAgIHRoZSBvYmplY3QgeWV0LgorICAgICAgICAv
LyAtIFRoZSB2YWx1ZSB3ZSBhcmUgZml4aW5nIHRvIHB1dCBpcyBnb2luZyB0byBiZSBrZXB0IGxp
dmUgYnkgT1NSIGV4aXQgaGFuZGxpbmcuIFNvCisgICAgICAgIC8vICAgaWYgdGhlIEdDIGRvZXMg
YSBjb25zZXJ2YXRpdmUgc2NhbiBoZXJlIGl0IHdpbGwgc2VlIHRoZSBuZXcgdmFsdWUuCisgICAg
ICAgIAorICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgUHV0QnlPZmZzZXQsCisgICAg
ICAgICAgICBPcEluZm8oZGF0YSksCisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisgICAg
ICAgICAgICBiYXNlLAorICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYg
KHZhcmlhbnQucmVhbGxvY2F0ZXNTdG9yYWdlKCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKE51
a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHksIGJhc2UsIHByb3BlcnR5U3RvcmFnZSk7CisgICAg
CisgICAgICAgIC8vIEZJWE1FOiBQdXRTdHJ1Y3R1cmUgZ29lcyBsYXN0IHVudGlsIHdlIGZpeCBl
aXRoZXIKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MjkyMSBvcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQyOTI0LgorICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRy
YW5zaXRpb24pLCBiYXNlKTsKKyAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29t
cGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlu
bGluZWRQdXRCeUlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZGVmYXVs
dDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gfQorfQor
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKICAgICBjbGVh
ckNhY2hlcygpOwpAQCAtNjA2MSw2ICs2MTc2LDUwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRf
YnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2
YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRl
Y29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2Rl
Lm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IGZh
bHNlOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVz
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGlu
ZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkp
LmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUg
aXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51
bGwuCisgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1h
dGlvbi4KKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAorICAgICAgICAgICAgICAgICAg
ICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAgICAgICAgICYmICFieVZhbElu
Zm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5Q29tcGls
ZUFzUHV0QnlPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
YnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZp
ZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVy
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUq
IGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3pl
biksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAg
bG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRy
eUNvbXBpbGVBc1B1dEJ5T2Zmc2V0KQorICAgICAgICAgICAgICAgIGhhbmRsZVB1dFByaXZhdGVO
YW1lKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8oYnl0ZWNvZGUu
bV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTgyNzQsNyArODQzMyw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBC
eXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGls
ZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhp
dEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChi
YXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAg
ICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4NSw3ICs4NDQ0LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAg
ICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3Rv
cmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9y
IGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0
QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5m
byhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcs
IGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5h
c1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQg
YXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2Ug
dGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFjZDY0NjhkZWFj
YmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTMsNiAr
MjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJ
RCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBs
ZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dl
dF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICBy
ZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzog
Ly8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJs
ZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3NTVjNDEzOWNh
Li4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVm
aW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBj
YXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgwM2NmYjlkOTAz
Yjk1NjI3M2Q4ZmUzMjkuLjNmM2Y1ZjJmOTBmMWNkZjVjOWYwZDdhODgxZTk0YjZlMGEyMGJlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVj
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQobm9kZSwgaW5k
ZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGlyZWN0LCBjaGFu
Z2VkLCBhbHJlYWR5SGFuZGxlZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOiB7Ci0gICAgICAgICAgICAg
ICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICAgICAgRWRn
ZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGls
ZCA9IGNoaWxkRWRnZS5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBBU1NFUlQoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNl
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VW
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgQWJzdHJhY3RW
YWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKLQotICAg
ICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBz
dGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAg
ICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAg
ICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwotCi0gICAgICAgICAgICAgICAg
aWYgKCFzdGF0dXMuaXNTaW1wbGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNG
VEwoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGFsbEdv
b2QgPSB0cnVlOwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0
OwotICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7Ci0gICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJp
YW50cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mIGNvbmRpdGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1
cmUobV9ncmFwaC5tX3ZtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9u
LnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KHN0cnVjdHVyZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNl
bGxVc2UpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlm
ICghYWxsR29vZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1
Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5hZGQobmV3U3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFy
aWFudDo6UmVwbGFjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICgh
YWxsR29vZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
LSAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAg
ICAgICAgICAgICAgICBtX2ludGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxv
Y2ssIHRyYW5zaXRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFk
aWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwot
Ci0gICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0
aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCi0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0
YXR1cywgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBzdGF0dXMpKSwKLSAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1
dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50
aWZpZXJOdW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7Ci0K
LSAgICAgICAgICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9t
dWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50
cyA9IHN0YXR1cy52YXJpYW50cygpOwotICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJO
dW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b011bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9
IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdDsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQ
dXRCeU9mZnNldChub2RlLCBpbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGls
ZDIoKSwgaXNEaXJlY3QsIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVkKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtMTQ3MCw2ICsxMzg1LDkzIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB0cnlGb2xkQXNQdXRCeU9mZnNldChO
b2RlKiBub2RlLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEVkZ2UgYmFzZUVkZ2UsIEVkZ2UgdmFs
dWVFZGdlLCBib29sIGlzRGlyZWN0LCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxl
ZCkKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAg
ICAgICBOb2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAg
ICAgICBBU1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFi
c3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAg
ICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7
CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihv
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3Ry
dWN0dXJlU2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlk
KCksCisgICAgICAgICAgICBpc0RpcmVjdCk7CisKKyAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1w
bGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZh
cmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA+IDEgJiYgIW1f
Z3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2hh
bmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Cisg
ICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAgICAgIGZvciAoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAg
ICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFu
dC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29u
ZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0
cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwg
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25vd25DZWxsVXNlKSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlk
VmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwg
bmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5r
aW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAgICAgICAgICAgIG5ld1Nl
dC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUHVzaCBDRkEgb3ZlciB0
aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisgICAgICAgIG1faW50ZXJw
cmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2ludGVycHJldGVyLm9ic2Vy
dmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsKKyAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1NldCkg
PT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7
CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVm
YXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCisKKyAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgRWRnZShiYXNlTm9kZSkp
OworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAx
KSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNl
VmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7CisK
KyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRC
eU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlh
bnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVy
OworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KGRhdGEpOworICAgIH0K
KwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsKICAgICBJbnNlcnRpb25T
ZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIwOGM3OS4uN2RmM2QzNWQ0
MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2Fz
ZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIFB1dFN0
YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYjZjMGJiOGJh
OTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uM2QyMGE3MWE5MTA5ZmQ2ZjZkNzZhNjA3
NzkwZTQ5ODMyY2YxZTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xOTExLDYgKzE5MTEsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENy
ZWF0ZVByb21pc2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgICAgICBjYXNl
IENyZWF0ZUFzeW5jR2VuZXJhdG9yOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAg
ICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGE1Y2RmMWFh
NmYzZDJkOWIxZTg2ZWQ1YmQyMzE4YjYyZDZhYzhlZTkuLmU2YjBlOGVkNGMzODhiODZkZWU4NDM1
MzkwMjY4YzhlZGFjYTJhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01
Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQ
dXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxh
dGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpAQCAtNjE1LDcgKzYxNiw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1B1dEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nl
c3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0g
UHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNldCk7CisgICAgICAgIEFTU0VS
VChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0
QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNldCB8fCBtX29wID09IFB1dFByaXZh
dGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVu
LnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxk
MihiYXNlKTsKQEAgLTYyNSw3ICs2MjYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3Qg
fHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlk
IHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29w
ID09IFB1dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gZGF0YTsKICAgICAg
ICAgbV9vcCA9IE11bHRpUHV0QnlPZmZzZXQ7CiAgICAgfQpAQCAtMTA4Nyw2ICsxMDg4LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNjksMTMgKzIyNzEsMTMgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mby5hczx1
aW50OF90PigpKTsKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5
SWQ6Ci0gICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1
c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4Myw2ICsyMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsK
KyAgICAgICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgfHwgb3AoKSA9PSBQdXRQcml2YXRl
TmFtZUJ5SWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCgp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICAg
ICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgfHwgb3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5
SWQpCisgICAgICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUobV9v
cEluZm8yLmFzPHVpbnQ4X3Q+KCkpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CisgICAg
fQorCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDY4ODE1ZDMx
ZTM2MDAzNDQzZjEzNWQ1YjM5ZGNiNTJjZDkwMjIwZS4uNzdhN2ViZjFiOTExMzM5MDAzZWJkNzJh
MTZhZGVlODRkNDI5MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtMjA4LDYgKzIwOCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
KSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYz
OS4uNDMzNTI2NTliMmFlMGFjMzU5N2Q5ZDVkYTg4OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVhYmxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIK
ICNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJh
bmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01B
TW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxp
Y2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5k
LnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQg
T3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOWQzZjg5ZTY2ZWFlNjhj
NmNkMTU0M2M3N2M1N2Y1OTBkOTc4NzQ3OC4uZmYzNjI4NDAyMTlhYjQyY2E3MDc1N2NkOWU1ZGNh
ZDlkNmUyZGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzNzgsNiArMTM3OCw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQ
dXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0
UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFm
MWNmNS4uOTE3ZGUwMmZlNmJlMjhiYzNjODc2OTJkYjBhNTdmYzllODQyNzQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYs
OCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJ
ZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6Cisg
ICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVy
dHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFk
ZTVlZDE1NWFjMC4uNDFhOTY3MzhkOGY2MDlmODBkNTQ0ZDAzYzM4ZjdmOTBiNzAxNGRiMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTM1MjQsNiArMzUyNCw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxX
aXRoVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBu
b2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKwor
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5VmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworCisg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgp
ID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0
ZU5hbWVHZW5lcmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkK
K3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisKKyAgICAvLyBXZSBlbWl0IHBy
b3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAg
IC8vIHRvIGNoZWNrIGl0IGhlcmUuCisgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZp
ZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJl
Y3RQcml2YXRlRmllbGRTZXQ7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworCisgICAgbm9SZXN1bHQobm9k
ZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mo
Tm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTE0Mzk2LDcgKzE0NDMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAg
ICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAxYjYzMjE3ZTM2YzcxZWIxZWYwYTM2ZDg5MmMw
ZTYxZDIwZmUzZTUyLi5mMDhkZmU3NjI3MmFiNDQ4NTJiZTQwZDFmZGNjZWQ3MmQzODgyMGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0x
MzYwLDYgKzEzNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxs
V2l0aFN0cmluZyhOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxk
Myk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRn
ZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zm
c2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCA1ODIwYmE1YTdmYmViZGQ3MWE2N2Y5ODdhZjEyM2MwM2Q5NWQ1NmNlLi40MzI2ZjIy
MjU2Mjk4NmQ3MzIzOGU4MTdhZmI5NzMwMTU0ZGQ4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI1OTAsNiAr
MjU5MCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAg
Y29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5h
bWVCeUlkKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFs
RGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBiYmNiN2Q0MjJmOWU0YzcwYTMxNmNiMjM5MTliOWExY2EwMDcwYmViLi41ZjdjYjAzZjdk
NzFiYzUzNjRmZWU5ZThmZmRiYjA4OTA2NGVjOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5NDgsNiArMjk0OCwxNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29tcGlsZVB1
dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogog
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IDA3MTUzYjhlNDcxMmY2ODI5YjZlYmM2MzIxNzQ2NmY4M2Q0NmMxYzQu
LjcwZTc4Mzk4YzM2YTI4NjhmYWY3MjdjNDhlZjEzOTEyZDhkMzlhNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICAgICAgICAgIC8vIFdlIGVtaXQgSUMgY29k
ZSB3aGVuIHdlIGhhdmUgYSBub24tbnVsbCBjYWNoZWFibGVJZGVudGlmaWVyIGFuZCB3ZSBuZWVk
IHRvIGludHJvZHVjZSBhCisgICAgICAgICAgICAgICAgLy8gYmFycmllciBmb3IgaXQuIE9uIFB1
dFByaXZhdGVOYW1lLCB3ZSBwZXJmb3JtIHN0b3JlIGJhcnJpZXIgZHVyaW5nIHNsb3cgcGF0aCBl
eGVjdXRpb24uCisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2OTZkODQ1ZjgxYzNjNmY5
NzczOTdhLi5iNmE4MmM3MWQ0NGU5NDdjZTI5ZDJlMjc5YjBjMDM2OGZkZmFjMzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTQsNiAr
Mzk0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2Fz
ZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZGE5ZGM1M2Ex
NmYzMThmMDIzMzQxMzk5Nzk2MWVlYWRmNmQxMzU4ZS4uOTM4MTY5NzBiZWFiMDA5ZmJkZWQyNTU5
NzI2NzQzMDVjYzViYTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAxNyw2ICsxMDE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbFdpdGhUaGlz
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAg
ICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICAgICAgY29tcGlsZVB1dFBy
aXZhdGVOYW1lQnlJZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXRvbWlj
c0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNzQW5kOgogICAgICAgICBjYXNlIEF0b21pY3NDb21w
YXJlRXhjaGFuZ2U6CkBAIC0zOTQ1LDYgKzM5NTEsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZh
bHVlKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKCkK
KyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisK
KyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAg
IC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBk
b24ndCBuZWVkCisgICAgICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCisgICAgICAgIGF1dG8gcHV0
S2luZCA9IG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBEaXJlY3RQ
cml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7CisgICAgICAgIGNhY2hl
ZFB1dEJ5SWQobV9ub2RlLCBiYXNlLCB2YWx1ZSwgRUNNQU1vZGU6OnN0cmljdCgpLCBwdXRLaW5k
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisgICAgeworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMygpKTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQ
dXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6
IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICB9
CisKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CkBAIC00MTkxLDE0ICs0MjIzLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisg
ICAgdm9pZCBjYWNoZWRQdXRCeUlkKE5vZGUqIG5vZGUsIExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFs
dWUsIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCiAgICAgewotICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwotCi0gICAgICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGU7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCk7CisgICAgICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAogICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CkBAIC00MjE0LDcgKzQyNDIs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25z
KHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAg
ICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAt
NDIzMyw3ICs0MjYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBl
Y21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0
ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTQyNjEsNiArNDI4OCwxNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgIH0KKworICAgIHZv
aWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKTsKKworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgYXV0byBwdXRLaW5k
ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0OworICAg
ICAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIGJhc2UsIHZhbHVlLCBub2RlLT5lY21hTW9kZSgpLCBw
dXRLaW5kKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3
NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUuLjczMTcxMDA5NmNmM2UyNDk4YWU0NWRkYTI2
YWE4MmU3OWNkNDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBA
IC0xMzksOSArMTM5LDkgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CiAjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCmluZGV4IGU4ZmY1MGRjMDE2YjdlMWQ5NDE5NTBiNTY0MjEwNWY5NTk3
NmUyNDguLjgwMzVkNjQyYzljN2QyYjgyN2IwMWY2MzdiMTQ2NDY5M2IzYzAzY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQyNiw2ICs0MjYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRl
cl9ieV9pZCkKQEAgLTU4Nyw2ICs1ODgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9wcml2YXRl
X25hbWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3Bfc3ViKQpAQCAtOTAyLDcgKzkwNCwxMiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6
OmxpbmsoKQogICAgICAgICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+KCk7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJ
bmRleEp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkpOwotICAgICAgICAgICAgYXV0byBi
YWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcCkpOworCisgICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVK
dW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7CisgICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOworICAg
ICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCisgICAgICAg
ICAgICAgICAgYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlv
bkluZm8uYmFkVHlwZUp1bXApKTsKKwogICAgICAgICAgICAgYXV0byBkb25lVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5kb25lVGFyZ2V0KSk7CiAgICAg
ICAgICAgICBhdXRvIG5leHRIb3RQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZh
bENvbXBpbGF0aW9uSW5mby5uZXh0SG90UGF0aFRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBz
bG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8u
c2xvd1BhdGhUYXJnZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDUwOGFmNTBmNjFl
YjMxNmZlMzMzOWE5N2Q1MGVjNTRiMTk1NmM3OTcuLmI0NWJlM2FkNTAyNzkxNTBiNzkyNDNhMDRm
ZmJlYzExZjkzMWY5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNzEsNiArNzEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBPcFB1dEJ5VmFsOwogICAgIHN0cnVjdCBP
cFB1dEJ5VmFsRGlyZWN0OworICAgIHN0cnVjdCBPcFB1dFByaXZhdGVOYW1lOwogICAgIHN0cnVj
dCBPcFB1dFRvU2NvcGU7CiAKICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CkBAIC0xNjEsNiArMTYy
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBC
eVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAs
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisg
ICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwg
bm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25l
VGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87
CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtMjM0LDYgKzI0NCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0
aENhY2hlZElkPE9wPihieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHB1dEtpbmQsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpJVCBqaXQodm0s
IGNvZGVCbG9jayk7CisgICAgICAgICAgICBqaXQubV9ieXRlY29kZUluZGV4ID0gYnlWYWxJbmZv
LT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICB9CisKICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUhhc0luZGV4ZWRQcm9w
ZXJ0eShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwpAQCAtMjU5LDYg
KzI3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
ICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5m
byosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCisg
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZh
bEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKKwogICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyosIFJldHVy
bkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKQEAg
LTQwNiwxMSArNDI1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWlu
ZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
IHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5k
IHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFs
SWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAorICAgICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVO
YW1lLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYg
c2xvd0Nhc2VzKTsKKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2Fz
ZXMpOwogCkBAIC02MDUsNiArNjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wID0gT3BQdXRCeVZhbD4KICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92
YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjg2
LDYgKzcwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25l
d19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZDhmOTViYjBmN2NmYzg5ODJiMzhl
ODcwZTFiYmI3YTFkNDkwZDJhMC4uNzRjZGFmNDMyMjRhZGFjYWViYzI1N2Y1ZjdjMjYxMTI2NjFh
YWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBK
SVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAog
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwg
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQ
dXRLaW5kIHB1dEtpbmQpCiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2Us
IHZhbHVlKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRL
aW5kKHB1dEtpbmQpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihz
Y3JhdGNoKTsKIH0KQEAgLTE1MiwxMiArMTUxLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlv
bl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogewotICAg
IGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6
Tm9uZSkgewotICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgaWYgKG1f
cHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRTZXQpIHsKICAgICAgICAgQVNTRVJUKG1fZWNt
YU1vZGUuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQotICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKKyAgICB9CisKKyAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmlu
ZSkgeworICAgICAgICBBU1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAKICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMjljMmQy
ZTZkMzI4ZGE5Y2IzNzYxMTVkOTkyZWEyYTJjNTBjNTk5NC4uODUzODM1YTM5MzU4NTI5MTI3ZGUy
ZjM5N2I0OTc5OTgyNGUzNmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsxMzAsMTEgQEAgY2xh
c3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1Ymxp
YzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFN
b2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVD
TUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOwor
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRL
aW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsK
ICAgICAKQEAgLTE0NSw3ICsxNDMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2Rl
IG1fZWNtYU1vZGU7CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7Ci0gICAgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZh
bEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDJmNzZkYjAwNjkyMTE4YWY4NTJlNzA2Mjk1
MDI3NDI5OTg1YWNmYjIuLjQ1ZjdmMGM5MThjZWIzYmRjNzQ3ZTQzZWRjZTMyNmZhMTAyZTY2YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC02OTksMjEgKzY5OSwy
MSBAQCBBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1
dEJ5SWQgb3ApCiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjpl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lO
TElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0
ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsKKyAgICByZXR1cm4g
RUNNQU1vZGU6OnN0cmljdCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLVByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKQorUHJpdmF0ZUZp
ZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVGaWVsZFB1dEtpbmQoT3ApCiB7Ci0gICAgcmV0dXJuIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7CisgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtp
bmQ6Om5vbmUoKTsKIH0KIAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihP
cFB1dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRQdXRLaW5kIEpJ
VDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1l
IG9wKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsK
KyAgICByZXR1cm4gb3AubV9wdXRLaW5kOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDJlY2ZhZGExYzk3
NTkzZGNlY2MwNGUxNjg2ODdlNzMxZGUzZmQ2ZjMuLmZiYjk2MWQ0OGNjZmFmZjlhOWNiYWY4NGNi
ZjgyZmYxZDNhOWZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtNzcwLDExICs3NzAsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJ
bmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50
aWZpZXIpKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJ
bmZvLCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5
SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRl
bnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpOwog
ICAgIH0pOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxl
SWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtNzg2LDcgKzc4
Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlm
aWVyKSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5m
bywgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KTsKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0KTsKICAgICB9KTsK
IH0KIApAQCAtMTEwNSw3ICsxMTA1LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBw
dXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJ
bmZvLCBlY21hTW9kZSk7CiB9CiAKLQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMTE5
LDYgKzExMTgsMTMyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZh
bChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5
VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2
YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIE9wdGlt
aXphdGlvblJlc3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5v
dE9wdGltaXplZDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJ
ZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAg
ICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZy
YW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBB
U1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5m
by0+c2VlbikgeworICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgp
ID09IHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRQ
cml2YXRlTmFtZVdpdGhDYWNoZWRJZCh2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6
T3B0aW1pemVkOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIFNlZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9u
Y2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9u
UmVzdWx0OjpPcHRpbWl6ZWQgJiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJl
c3VsdDo6U2Vlbk9uY2UpIHsKKyAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0
aGFuIDEwIHRpbWVzIHdpdGhvdXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAg
Ly8gbmV2ZXIgbWFrZSB0aGF0IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9u
cyB3b3J0aCBvZiBvcHBvcnR1bml0eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0
IHRoZSBwdXRfcHJpdmF0ZV9uYW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2Ug
Y291bnQgdXAgc2xvd1BhdGhDb3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAg
ICAgICBpZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBv
cHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisK
KyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
KSB7CisgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNE
ZWZpbmUoKSA/ICBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25T
ZXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICAKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xh
c3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4g
c3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0
byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5l
KCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVj
dC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBm
aWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAg
ICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29u
c3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNT
dHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAg
ICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBz
Y29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nl
c3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2Rz
IGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9
IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VP
YmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXgg
NjVlNzEyNTk1NjgzMGE4ODNlODMzMzA3OTUzOWUyMDQ0MmMwNWQ5NC4uMWNjODljMzcyYjZkMWQy
MDI5YTAzMjQ2MjcxMmJmN2I2MTNlOWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiSklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTE5MSwx
MyArMTkyLDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRw
dHJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVBy
aXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENh
bGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYzIxYzBlNjFiZWIxNTM4YjYwYWUyYWEzMTcw
YzU1MmEyM2YzNmJmZS4uYzlkYzI0YzkzYTA2MTM4YTdjOTU3NzE1ODRhZmI0NTM2MGIwMDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpA
QCAtMzE2LDcgKzMxNyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBh
IGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTM0Niw3
ICszNDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAg
ICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVj
bWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2Rl
OwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0zNjksNiArMzcwLDQ3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRC
eVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNo
YWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2Uo
ZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFs
SW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJp
dmF0ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRp
b25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAgICBHUFJS
ZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAg
IEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIs
IGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQg
PSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlv
bkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeUlkPigpOwpAQCAtNzAwLDcgKzc0Miw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6
IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzU4LDcgKzE0MDAsNyBAQCBK
SVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVj
b2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xMzc3
LDYgKzE0MTksMTIgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAorSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdp
dGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykK
K3sKKyAgICBhdXRvIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IERp
cmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICByZXR1
cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBwcm9wZXJ0eU5h
bWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJp
ZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7CiAgICAg
QVNTRVJUKG1vZGUgPT0gVW5jb25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2RlID09IFNob3Vs
ZEZpbHRlckJhc2UpOwpAQCAtMTQ2Niw2ICsxNTE0LDQwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvCiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFs
Pihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRy
LCBKSVRBcnJheU1vZGUpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlW
YWw8T3BQdXRCeVZhbERpcmVjdD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAordm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUpCit7CisgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1f
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0
cigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJp
dmF0ZU5hbWU+KCk7CisKKyAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CisgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOworCisgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0UHV0UHJpdmF0ZU5h
bWVXaXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2Fz
ZXMpOworCisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp0aGlzLCBtX2NvZGVCbG9jayk7CisgICAg
cGF0Y2hCdWZmZXIubGluayhzbG93Q2FzZXMsIGJ5VmFsSW5mby0+c2xvd1BhdGhUYXJnZXQpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZUNhc2VzLCBieVZhbEluZm8tPmRvbmVUYXJnZXQpOwor
ICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKKyAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZvLT5leGNlcHRpb25IYW5kbGVyKTsKKwor
ICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX2NhbGxzKSB7CisgICAgICAgIGlmIChj
YWxsU2l0ZS5jYWxsZWUpCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxTaXRlLmZy
b20sIGNhbGxTaXRlLmNhbGxlZSk7CisgICAgfQorICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1ZmZl
ciwgcGF0Y2hCdWZmZXIpOworCisgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpF
X0NPREVfRk9SX1NUVUIoCisgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1
YlJvdXRpbmVQdHJUYWcsCisgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGgg
Y2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgYnlWYWxJbmZvLT5zdHViSW5m
byA9IGdlbi5zdHViSW5mbygpOworCisgICAgYXV0byBnZW5lcmljRnVuY3Rpb24gPSBieXRlY29k
ZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJp
YyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYzsKKworICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxO
b1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oZ2VuZXJpY0Z1bmN0aW9uKSk7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCmluZGV4IDJhNWVjYzc0MjE0NTUwNDcxNTczYjA5MTk4Y2MxNWViNDk0YmZlZGQu
Ljg0MGRlNTY5OWNhMDJlY2IwOTE5ZTgzYmRkNjgxOWZmYTY5ZmU2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAt
MzMxLDYgKzMzMSw1MCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogfQogCiAKK3ZvaWQgSklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZv
KCk7CisKKyAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMs
IHJlZ1QyKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1w
KCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworCisgICAgTGFiZWwgZG9uZSA9IGxh
YmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxDb21w
aWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1wLCBkb25l
LCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFs
dWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9b
bV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRL
aW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEpTVmFsdWVSZWdz
IGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJl
Z1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisK
KyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQ
UigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9w
ZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRh
Z0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFy
Z2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9u
SW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92
YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTcwOCw3ICs3NTIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwK
ICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwg
ZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25l
KTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDZhYTI2MDZhYTlkYjVjYmI5ZDY3MjgzMjlhOTFlY2Fh
NGZmNDQzMTguLjhlNWVhYzZkOTBiNmJmN2EwOGExODg3MWJhODU5N2Q3MmQ3ZWFkODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTM4LDEwICs1MzgsMTAgQEAgc3Rh
dGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAg
ICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0
ZUZpZWxkQ3JlYXRlKQorICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRE
ZWZpbmUpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0
KQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJp
Y3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFNldCkKKyAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0OwogICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAgICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQpAQCAtNTU0LDEwICs1NTQsMTAgQEAgc3RhdGljIGF1dG8gYXBwcm9wcmlh
dGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwg
UHUKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dE9wdGltaXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVh
dGUpCisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSkKICAg
ICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemU7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkK
LSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFNldCkK
KyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7
CiAgICAgfQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYwOSw2ICs2MDksOSBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0gRGly
ZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5l
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmJhc2UoKSA9
PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CkBAIC02NzAsNyArNjczLDYg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAg
ICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGly
ZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0
YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVs
bHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY4OCw3ICs2OTAsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0
ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZh
dGVOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdT
dHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0
aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1MjEsOCArMTUyMyw4IEBAIHZvaWQgcmVzZXRQdXRCeUlE
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAg
ICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXpl
OwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5j
dGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKQotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9u
ID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRG
dW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUp
CisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1
bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGY2MTBj
MTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQxM2YuLmM4YzI2MTUyNDNhZDhjMGE2ZGVk
ZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw5ICs1OSw5IEBACiAjaW5j
bHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQdXRCeUlk
RmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJv
dG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0
QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkNGQwOTE2ZmYyZDc2MTQ0MDQz
YTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZlMDZlNmJhYzk3MGY1MzRiM2RiMTI4MjM5
YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1
ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUu
bV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0gICAgICAgIEFT
U0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
ICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJs
ZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwotICAgICAgICBk
b3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKLSAgICAgICAg
dWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2Ny
aXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0
QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAgICAgICAgIGJh
c2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIs
IHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0
RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9FTkQoKTsKLSAg
ICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJp
bmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQocHJvcGVydHku
aXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAgICAgIGJhc2VP
YmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJ
bmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlzUHJpdmF0ZUZp
ZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2
YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElOVF9FTkQoKTsg
ICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhS
ZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFs
dWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2Jh
bE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgQVNTRVJUKHByb3Bl
cnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSA6IG51
bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRo
aW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdh
eXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Cisg
ICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChieXRlY29kZS5t
X3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZp
ZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYmFzZU9i
amVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5U
X0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1YnNjcmlwdC5pc0NlbGwo
KQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJl
SUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
YiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKKyAgICAgICAg
ICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAgICAgICAgICAgIGlmIChT
dHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkgeworICAgICAgICAgICAg
ICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFs
aWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5p
dHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJv
dG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVk
IHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQg
dGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2Fj
aGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIGlmIChz
bG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywg
dm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09
IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9i
amVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3UG9seVByb3RvKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+aXNPYmplY3Qo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwg
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNo
IGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxlIGNhY2hpbmcKKyAgICAg
ICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9yZSB0byBhbiBleGlzdGlu
ZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAgICAgICAgICAvLyBwYXRo
cyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5
IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1h
eSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAorICAgICAgICAg
ICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFu
c2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24g
Zm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1
Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRp
ZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9v
bGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXND
ZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNkZGUyNWI5ZmUxYjY4ZDc3
NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgzM2YzYTljMWNjYjhjZGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAt
NzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9w
cml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0
X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0
dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3Nl
dHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFjZWRkNGUwMzgxNDAxNjI5
Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNlZjc5OTYxYTJhMDkwMDFm
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBAIG1hY3JvIHdyaXRlQmFy
cmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKICAgICAgICAg
ZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwg
Z2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdldChjZWxsRmll
bGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwg
Q2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmllck9uQ2VsbFdp
dGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVyRG9uZToKK2Vu
ZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1l
KQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQpAQCAtMTY5
Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwg
T3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQog
ZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUsIE9wUHV0UHJp
dmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQor
ICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisg
ICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJv
cGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBD
ZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikK
KyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0
NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFBy
aXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
cHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFz
ZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRh
CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJ
RFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVp
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5k
V2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQg
bWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVs
b2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2
YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhl
IG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgor
ICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQx
LCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0
W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0
MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkK
K2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4
aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3ZWJiZmFhMzU0My4uZmFm
Zjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3
MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUs
IE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3BhdGNoKCkK
IGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXpl
LCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAub3BQdXRQcml2
YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0
ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0Miwg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBs
b2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAg
YmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2lu
dCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50
IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJp
dmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQx
LCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwg
bV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAg
ICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAg
ICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246CisgICAgIyBUaGUgb25s
eSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAg
Z2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQy
KQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQx
CisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKKyAgICB3cml0
ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQorICAgIGRpc3Bh
dGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNy
byBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAg
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBj
b250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEx
MjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQucHJpbnQoIlNldCIpOwor
ICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRl
RmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJi
NTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0
OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0Mg
eworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0
ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0
S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBz
ZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29u
c3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxk
UHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
KworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAg
OiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8
fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQor
CisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhhNGY5YmUy
MWM1YWFiNmQxYWFiZDAwNWQ4MmZmNzM0MGEyY2EwYWUuLjViOWQxMTZjZWI5ZTZlNzg2ZWM3YThh
M2JlNDJjNmIxMjFmNGE2YjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDgtMjUgIENhaW8gTGltYSAg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEg
bmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RpbmcgdGVzdHMg
dGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVjdXRpb24gaW4KKyAgICAg
ICAgRlRML0RGRy4KKworICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVj
ay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQt
cHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1w
dXQtYnktb2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1vc3IuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHlt
b3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qczog
QWRkZWQuCisKIDIwMjAtMDgtMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJyb3IgZm9yIG9iamVjdCBsaXRlcmFsIG1l
dGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZjVlNjMwNTU3OGRlZjY4YjRlMjZmZmY4ZTcxY2Y5ZTBiOTQ4ZmNiCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmll
ci1pbnNlcnRpb24uanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
LCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbihhLCBlKSB7CisgICAgICAgIGlmIChhICE9
PSBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2Zp
ZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJw
MSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAg
ICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAg
dGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAg
ICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb2xkT2JqZWN0ID0gbmV3IEM7Citmb3IgKDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDUwMDApIHsKKyAgICAgICAgbGV0IGMgPSBuZXcg
QzsKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaSA9
PSA1MDAwKQorICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgb2xkT2JqZWN0LnNldEZpZWxkKHtw
cm9wOiBpfSk7CisgICAgICAgIGVkZW5HQygpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKG9s
ZE9iamVjdC5nZXRGaWVsZCgpLnByb3AsIGkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRp
cmVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFz
LXB1dC1ieS1pZC1kaXJlY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgw
N2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1w
dXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKQEAgLTAsMCAr
MSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitj
bGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAg
ICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFy
cltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJw
MiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAi
cDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAy
Il0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0
aGlzLiNmaWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlm
IChpID4gNTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9m
ZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGlu
Zy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAyZmFhODkxYWU0MTQwMWVl
YWNmZGFlZDgzNWY0ZTQyZGY0ZTVlNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQu
anMKQEAgLTAsMCArMSw1NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAg
IH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9u
ID0gZmFsc2U7CitsZXQgY29uc3RydWN0RGlmZmVyZW50ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAg
ICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChjb25z
dHJ1Y3REaWZmZXJlbnQpCisgICAgICAgICAgICB0aGlzLmZvbyA9IDA7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIG1ldGhvZChqLCBvdGhlcikgeworICAgICAgICBsZXQgYyA9IDA7
CisgICAgICAgIGxldCBvYmogPSB0aGlzOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJpZ2dl
ckNvbXBpbGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7Cisg
ICAgICAgIGlmIChqICUgMikgeworICAgICAgICAgICAgb3RoZXIuZm9vID0gajsKKyAgICAgICAg
ICAgIG9iaiA9IG90aGVyOworICAgICAgICB9CisgICAgICAgIG9iai4jZmllbGQgPSBjOworICAg
IH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAg
fQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUubWV0aG9kKTsKK25vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKworbGV0IG90aGVyQyA9IG5ldyBDKCk7CisKK2NvbnN0cnVjdERpZmZl
cmVudCA9IHRydWU7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzA7IGkrKykgeworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZChpLCBvdGhlckMpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNvbXBpbGF0aW9uID0gdHJ1ZQorbGV0
IGMgPSBuZXcgQygpOworYy5tZXRob2QoMCwgb3RoZXJDKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5n
ZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9m
ZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NzIwZWM4MDRhOTRmNzFlMzU4ZWE3YWFlNmE2ZmU4ZGVlMjU4
NTUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1j
b25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSwzOSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlm
IChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVyYXRpb25zID0gMTAwMDA7Cits
ZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSAw
OworCisgICAgbWV0aG9kKCkgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0
IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0ZXJhdGlvbnM7IGkrKykKKyAgICAg
ICAgICAgIGMrKzsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZp
ZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgYy5tZXRob2QoKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJDb21waWxhdGlvbiA9IHRydWUKK2Mu
bWV0aG9kKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9ucyk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZDZjMjk5YzY2MjcwYmFiY2EzZDAwN2I3YTc4MzA5NzcyNzk0ZDUxCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIs
ICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbihkeW5hbWljUHJvcGVydHkpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgCisgICAg
ICAgIGluaXQoKSB7CisgICAgICAgICAgICB0aGlzW2R5bmFtaWNQcm9wZXJ0eV0gPSBkeW5hbWlj
UHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5v
SW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NE
ZWNsYXJhdGlvbik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBDbGFzcyA9IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3BlcnR5JyArIGkpOworICAgIGxldCBjID0g
bmV3IENsYXNzKCk7CisgICAgYy5zZXRGaWVsZCgndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTU5OGU3MDE5ZDM3
NGQ2MGFhOWQ3Y2RhOWNmNTQyYjcxNjdmM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcwpAQCAtMCwwICsxLDY0IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAg
ICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rv
cigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBp
ZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhy
b3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRp
b24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAg
IH0KK30KKworbGV0IHNob3VsZE92ZXJyaWRlUmV0dXJuID0gZmFsc2U7CitsZXQgb2JqOworCitj
bGFzcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKHNob3VsZE92ZXJyaWRl
UmV0dXJuKQorICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICNmaWVsZCA9ICd0ZXN0JzsKKworICBn
ZXRGaWVsZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgfQorfQorbm9JbmxpbmUo
Qy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhD
LnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICAg
IHNob3VsZE92ZXJyaWRlUmV0dXJuID0gdHJ1ZTsKKyAgICAgIG9iaiA9IHt9OworICAgICAgbGV0
IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLnByb3RvdHlwZS5nZXRGaWVs
ZC5jYWxsKG9iaiksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgICAgbmV3IEMoKTsKKyAgICAgIH0pOworICB9IGVsc2UgeworICAg
ICAgbGV0IG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQuc2hvdWxkVGhyb3co
VHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgYy5nZXRGaWVsZC5jYWxsKG9iaik7CisgICAg
ICB9KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1pbnZhbGlkLXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZh
bGlkLXN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDdjZWE2MDAwNWE5YjVmODY4YTBiNTNiZjIxZDc1
YzI0ZmJiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWludmFsaWQtc3RvcmUuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUp
IHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzog
ZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlv
bjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
dGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBi
dXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRT
dG9yZSA9IGZhbHNlOworCitmdW5jdGlvbiBmb28oKSB7CisgIGNsYXNzIEMgeworICAgICNmaWVs
ZCA9IHRoaXMuaW5pdCgpOworICAgICNmb287CisKKyAgICBpbml0KCkgeworICAgICAgaWYgKHNo
b3VsZFN0b3JlKQorICAgICAgICB0aGlzLiNmb28gPSAxMjsKKyAgICB9CisgIH0KKworICByZXR1
cm4gbmV3IEMoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICBzaG91bGRTdG9yZSA9IHRydWU7Cisg
ICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgZm9vKCk7Cisg
ICAgfSk7CisgIH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzMxNGZhOWU3
MDQ5ZjFiODBiMDJmYzBhNzE5NTQ3ZTdhMjFkYjkwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxv
d1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAg
ICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
ZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNl
cHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3
aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmFjdG9yeUNsYXNzKCkg
eworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQor
ICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVs
ZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICBy
ZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0
IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVW
YWx1ZShjMi5nZXRGaWVsZCgpLCAndGVzdCcpOworYzIuc2V0RmllbGQoJ2ZvbycpOworYXNzZXJ0
LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAnZm9vJyk7CisKK2xldCBjID0gbmV3IEMoKTsKKwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLnNldEZpZWxkLmNhbGwoYzIs
ICd0ZXN0Jyk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBj
Mi5zZXRGaWVsZC5jYWxsKGMsICd0ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLW9zci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY5NWExYWRlMzc2OWM2MTRkZGM5MzAxMzJlYWY4
OGUyMWVjMmRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1vc3IuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMg
eworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYg
KGkgPj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1
cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
ZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9Jbmxp
bmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
bm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAx
NDZlMTU2ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7
CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFu
b3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0
RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citu
b0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cisg
ICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVs
ZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2EzMjk3YmVk
ODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCww
ICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIHNl
dEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZp
ZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
bm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5z
ZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
Zm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4
MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5q
cwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oKSB7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikg
eworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0
RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25v
SW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigpOwor
bGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMuc2V0
RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0
ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407475</attachid>
            <date>2020-08-28 09:15:30 -0700</date>
            <delta_ts>2020-09-03 09:09:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200828131526.patch</filename>
            <type>text/plain</type>
            <size>151084</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2JhMTBmZGY1Y2Y4M2JkZTA3OGE5ZjdmMGZmNDlhMDg5YTZiZDU1Li42NWQzZThhYjYxYmQxOTZm
ZTVmZDA4NGRhODQ4MGViMzVjMmJlZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzAgQEAKKzIwMjAtMDgtMjUgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OmVj
bWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAg
ICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6
ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5T2Zmc2V0KToK
KyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0Mp
OgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5
SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJ
ZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGlu
ayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENvbXBpbGF0aW9u
SW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93
UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9k
ZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0
S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZh
dGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRC
eVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5h
bWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6Cisg
ICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5k
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5l
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDgtMjUgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFy
bHkgZXJyb3IgZm9yIG9iamVjdCBsaXRlcmFsIG1ldGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkzMTU5YWZiODU4NGQ4OTQwZWQ1ZDVi
M2YyN2EzNDQzZThmMDhkMzIuLjgwMGRlZjRhYTllYzI2OTdhNTA0MWI4MGRmMDhlNzEwODYyMzUy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0Nyw3ICs1NDcsNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVj
b2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0
ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAg
ICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApAQCAtOTcxLDYgKzk3MCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9PcHRpb25zLmgK
ICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1lL1BhcnNlSW50LmgKKyAgICBy
dW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaAogICAgIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaAog
ICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzY4OTU1ZjIyZGUyZjI2
Mjc4NmU3ZTY4MTNhMjQwOGI4ODdlODlkZi4uNzBjZDczNTlmY2U4NTVmNTAxMmJmZDE4ZTg1OTk5
NDlkNDYyNzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTUsNyArMTI1
NSw2IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYz
IC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAx
NTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0
ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAv
KiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZBMzc1
OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2NCw2ICsxMjYzLDcgQEAKIAkJODZBREQxNDUw
RkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJN
djdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVB
OTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2Qjg2
OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNz
ZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VF
MDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00MTUyLDggKzQxNTIsNiBAQAogCQk4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNw
cDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBh
dHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTYyMzQ2NDUwQjAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgw
RjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRo
ID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxNzMsNiArNDE3MSw4IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8q
IFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0MkEx
NDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjIyLDYgKzc2MjIsOCBAQAogCQkJCTM3Qzcz
OEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovLAogCQkJCUNFMjBCRDAyMjM3RDNB
RDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwICovLAog
CQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhBMjA4MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuaCAqLywKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFt
RXhlY3V0YWJsZS5oICovLApAQCAtODQ5Myw4ICs4NDk1LDYgQEAKIAkJCQkwRjkzMzI5QTE0Q0E3
REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAw
MTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCi0JCQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAotCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKQEAgLTEwMjI5LDYgKzEwMjI5LDcgQEAKIAkJCQlDRTIwQkQwNzIzN0Qz
RTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAwOUUgLyogUHJldmVudENvbGxlY3Rp
b25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8q
IFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1NUYy
ODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTBBQUVF
MUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMjY5LDcgKzEwMjcwLDYgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0
QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYg
LyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAw
MTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc2QzZFODIz
NDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
Q0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGVkM2E4ZDFiNTE0
MzdiNWRhZGNkMjk1ZjczMmMwZDlhMzNmZDA0NmUuLjQ1NWNiYjk0MGMxMjU4N2M0OGM4YmFjYzQ1
N2QxZmVhMmU3ZWU5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OSw3ICsy
NjksNiBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJ
ZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRW
YXJpYW50LmNwcAotYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwCkBAIC05NDMsNiArOTQyLDcgQEAgcnVudGltZS9PYmplY3RUb1N0cmlu
Z0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
IHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enpl
ckFnZW50LmNwcAorcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDJhZjk3NTc3MzIzOWRkMDhkNDkzNDM3NmIyMGI2MzIz
ZGQ0YmU1YzEuLjQxYWQ3ZjRiNzRhZDcyNTVkZDUxNjBhYzc3YmI2YzgwM2EzZTljMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDYs
MTAgKzQ2LDEwIEBAIHR5cGVzIFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJlc3Vs
dFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwKICAg
ICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQ
dXRCeUlkRmxhZ3MsCi0gICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAg
IDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTc0LDYgKzU3NCwyMCBAQCBvcCA6
Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxd
LAogICAgIH0KIAorb3AgOnB1dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAgICBi
YXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFByaXZh
dGVGaWVsZFB1dEtpbmQsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1
Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlND
ZWxsXSwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6
IFN0cnVjdHVyZUlELAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAg
ICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01OTksNyArNjEzLDcgQEAgb3AgOnB1dF9i
eV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHBy
b3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNNQU1v
ZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwCmluZGV4IDdhNmM0YTQzN2NiZmRiODZmZjZkZmU3M2FhNGQ2MzBkODk0MTYyZmYu
Ljg3MzFmNzJjZWY1OGM0OGFlZGYzYTNmZjk2NWE4MGEzYzdhYzk3ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI3LDYg
KzIyNyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVn
aXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0b3JH
ZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFz
ZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkK
KyAgICBVU0VTKE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAgICBV
U0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0lu
c3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFu
Y2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTM5NSw2ICszOTYsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydQogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBvcF9w
dXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBvcF9w
dXRfcHJpdmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNh
c2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDZiNWE5MDJkOGEzZDc3ZDQyNjk1OTBlNTMwODkxYWMyNmQ3MjExZjAuLmZkNGY2NDA4
ODZmMjgwZTljYzA1ODQyZWVlYzNjNmE3OGVkMjNmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01NDIsNiArNTQyLDcgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEluQnlWYWwpCiAgICAgICAgIExJTksoT3BQ
dXRCeVZhbCkKICAgICAgICAgTElOSyhPcFB1dEJ5VmFsRGlyZWN0KQorICAgICAgICBMSU5LKE9w
UHV0UHJpdmF0ZU5hbWUpCiAKICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5L
KE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTExMzYsNiArMTEzNywyNSBAQCB2b2lkIENvZGVCbG9j
azo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZp
c2l0b3ImIHZpcwogICAgICAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVj
dHVyZSkpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3
U3RydWN0dXJlKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0
dXJlSUQ7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJl
SUQgfHwgIW5ld1N0cnVjdHVyZUlEKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQo
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGlm
ICghdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0KKyAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlE
KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9CisgICAgICAgICAg
ICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7
CisgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkKKyAg
ICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUp
OworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzMDIsNiArMTMyMiwy
MiBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCisg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgSlNDZWxsKiBw
cm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICBpZiAoKCFv
bGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghcHJvcGVydHkg
fHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgJiYgKCFuZXdT
dHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50
IHB1dF9wcml2YXRlX25hbWUgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwor
ICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BUb1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAg
ICAgIGlmICghbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2Vk
KHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmgKaW5kZXggMzlmZWUwYTY2OWEyODI2NTg1YTJhNDkyMmEzODJiZjZiOGEwYWFlMy4u
ZTA1YTI1NjQ4YTEzYjA1OTcyZjY2NGMzN2RlMDhjZDNjODk0OTU5NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKKyNp
bmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRl
Y29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZh
bEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxl
T3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0yNTgsNDYg
KzI1OCw2IEBAIHN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4gewogICAgIH0KIH07CiAK
LXRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNp
emU+IHsKLSAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6
dW5zaWduZWRUeXBlOwotCi0gICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBh
IDIgYml0IGVudW0sIGVuY29kZWQgYXM6Ci0gICAgLy8gICAgICAgICAgaXNTdHJpY3QKLSAgICAv
LyAgICAgICAgICAgICB2Ci0gICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKLSAgICAv
LyAgICAgICAgICAgXgotICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25l
LCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGly
ZWN0Qml0ID0gMTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsK
LSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0g
MTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hp
ZnQgPSAyOwotCi0gICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZl
cnQoUHV0QnlWYWxGbGFncyBmbGFncykKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKLSAgICAgICAgYXV0byBpc1N0
cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7
Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7Ci0gICAgICAgIHJldHVybiAocHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAo
aXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHV0QnlWYWxG
bGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVj
dCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwotICAgICAgICBhdXRv
IGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7Ci0gICAg
ICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdw
aSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZFNoaWZ0KTsKLSAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6
OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgICAgICByZXR1cm4gYWNjZXNzID09
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPwotICAgICAgICAgICAgaXNEaXJlY3QgPyBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3Jl
YXRlKGVjbWFNb2RlKSA6Ci0gICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2Rl
KSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSk7Ci0g
ICAgfQotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0
IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6
OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtNDI3LDQgKzM4NywyNCBAQCBzdHJ1Y3Qg
Rml0czxFQ01BTW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CiAgICAg
fQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHJpdmF0ZUZp
ZWxkUHV0S2luZCwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CisgICAgdXNp
bmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhQ
cml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6
Y2hlY2socHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFz
ZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0KHB1dE1vZGUudmFsdWUoKSk7CisgICAgfQor
CisgICAgc3RhdGljIFByaXZhdGVGaWVsZFB1dEtpbmQgY29udmVydCh0eXBlbmFtZSBCYXNlOjpU
YXJnZXRUeXBlIHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0
S2luZDo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChwdXRNb2RlKSk7CisgICAgfQorfTsKKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2Qw
ZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdz
LmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFj
ZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKLXsKLSAgICBDb21tYVByaW50ZXIg
Y29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJlY3QoKSkKLSAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0g
ICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtQdXQiKTsKLSAgICBpZiAoZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0
ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIzODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
RUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgOiB1aW50OF90IHsKLSAg
ICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdz
IHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVD
TUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFs
c2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMg
dGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKLSAgICAv
LyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0
QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChFQ01B
TW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0
ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQdXRQcml2YXRlRmllbGQoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRGlyZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9u
ZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0OyB9Ci0gICAg
Ym9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7IH0KLQotcHJpdmF0ZToK
LQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVj
bWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCi0gICAgICAgICwgbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHByIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFN
b2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAg
ewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmlu
dFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQdXRCeVZh
bEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZi
MTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRmNmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYgKzI3LDYgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQ
cml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVGaWVsZFB1dCB9OworZW51bSBQdXRLaW5k
IHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZhdGVGaWVsZERlZmluZSwgRGlyZWN0UHJp
dmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCA1MzZiNzMwZWNjNWM0NzQ1MjdlMGVmZTQxMmRkNzRkNWY0OTcyM2EzLi4yZTUwZWEyNWYwNDMw
OGE1NjIxMjNlYTVjYTIyYmUyMDk1MjUwMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQ
cml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2Nr
LmgiCkBAIC0yNzI0LDcgKzI3MjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ4LDEzICsyNzQ5LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNp
Z25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0
ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFN
b2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5
LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHks
IHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkp
OworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVl
LCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKaW5kZXggNzA4MzFiOWI4NTEzM2U5ZmM4YjRiOWYwY2I0M2ZlNTFiZDRk
Y2MzMy4uNGM5OTVkMTYyYzZiZTg5M2JmODYwZWJiMmIyOWM1ZWUyZWE1NzJmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtNDAzNCwxNyArNDAzNCwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1l
OiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQ
dXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0g
bm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5h
bWU7CiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0
cnVjdHVyZVNldCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS51aWQoKSwKLSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwor
ICAgICAgICAgICAgICAgIGlzRGlyZWN0KTsKIAogICAgICAgICAgICAgYm9vbCBhbGxHb29kID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyY2Q0OWZkYWMx
YTUwMzQyZTE5ZGJhOWM2ZGZiNmI0ZjM2MGNjNzRiLi5jODliZmQzZTgwZGEzY2Y5ZjdhZWM2NzBh
Mjk2OGQyOGJlMGFjODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VK
dW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRl
ICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAi
UHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTI1
Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0
QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2RlSW5kZXggb3NyRXhp
dEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZhdGVOYW1lKAorICAg
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsIFByaXZhdGVGaWVsZFB1
dEtpbmQpOworCiAgICAgdm9pZCBoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7CiAgICAgCkBA
IC0xMjY3LDE4ICsxMjcwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JF
eGl0cyB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFN
b2RlIGVjbWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5t
X2VjbWFNb2RlOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFN
b2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAg
cmV0dXJuIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0KLQogQmFzaWNCbG9jayogQnl0
ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCkKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC01MDEyLDYgKzUwMDMs
MTMwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfSB9CiB9CiAK
K3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFByaXZhdGVOYW1lKAorICAgIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsCisgICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1
cywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQoreworICAgIGlmICgh
cHV0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkg
fHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgaWYgKCFwdXRCeUlk
U3RhdHVzLmlzU2V0KCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciks
IE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAx
KSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVz
Lm1ha2VzQ2FsbHMoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygp
ID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmll
ciksIE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV9n
cmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+
bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAKKyAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1
dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA6IHZhcmlhbnQub2xkU3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQu
a2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9
IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlQdXRCeU9mZnNl
dCwgT3BJbmZvKGRhdGEpLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgQVNTRVJUKHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBj
b25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IHB1dEJ5SWRTdGF0dXNbMF07CisgICAgCisg
ICAgc3dpdGNoICh2YXJpYW50LmtpbmQoKSkgeworICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJl
cGxhY2U6IHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgCisgICAgICAgIHN0b3JlKGJhc2UsIGlk
ZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1f
Z3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCkt
Pm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBBU1NFUlQocHJp
dmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAg
ICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cml2YXRlRmllbGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgCisgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRy
YW5zaXRpb24oKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7
CisgICAgCisgICAgICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgVHJhbnNpdGlv
biogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgICAgICBt
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlv
bigpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7
CisgICAgCisgICAgICAgIGlmICh2YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7CisgICAg
ICAgICAgICAvLyBJZiB3ZSdyZSBncm93aW5nIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIHRoZW4gaXQg
bXVzdCBiZSBiZWNhdXNlIHdlJ3JlCisgICAgICAgICAgICAvLyBzdG9yaW5nIGludG8gdGhlIG91
dC1vZi1saW5lIHN0b3JhZ2UuCisgICAgICAgICAgICBBU1NFUlQoIWlzSW5saW5lT2Zmc2V0KHZh
cmlhbnQub2Zmc2V0KCkpKTsKKyAgICAKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5vbGRTdHJ1
Y3R1cmVGb3JUcmFuc2l0aW9uKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9H
cmFwaCgKKyAgICAgICAgICAgICAgICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJ
bmZvKHRyYW5zaXRpb24pLAorICAgICAgICAgICAgICAgICAgICBiYXNlLCBhZGRUb0dyYXBoKEdl
dEJ1dHRlcmZseSwgYmFzZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGJhc2Up
OworICAgICAgICB9CisgICAgCisgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhKiBkYXRhID0gbV9n
cmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5vZmZzZXQgPSB2
YXJpYW50Lm9mZnNldCgpOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRp
Zmllck51bWJlcjsKKyAgICAgICAgCisgICAgICAgIC8vIE5PVEU6IFdlIGNvdWxkIEdDIGF0IHRo
aXMgcG9pbnQgYmVjYXVzZSBzb21lb25lIGNvdWxkIGluc2VydCBhbiBvcGVyYXRpb24gdGhhdCBH
Q3MuCisgICAgICAgIC8vIFRoYXQncyBmaW5lIGJlY2F1c2U6CisgICAgICAgIC8vIC0gVGhpbmdz
IGFscmVhZHkgaW4gdGhlIHN0cnVjdHVyZSB3aWxsIGdldCBzY2FubmVkIGJlY2F1c2Ugd2UgaGF2
ZW4ndCBtZXNzZWQgd2l0aAorICAgICAgICAvLyAgIHRoZSBvYmplY3QgeWV0LgorICAgICAgICAv
LyAtIFRoZSB2YWx1ZSB3ZSBhcmUgZml4aW5nIHRvIHB1dCBpcyBnb2luZyB0byBiZSBrZXB0IGxp
dmUgYnkgT1NSIGV4aXQgaGFuZGxpbmcuIFNvCisgICAgICAgIC8vICAgaWYgdGhlIEdDIGRvZXMg
YSBjb25zZXJ2YXRpdmUgc2NhbiBoZXJlIGl0IHdpbGwgc2VlIHRoZSBuZXcgdmFsdWUuCisgICAg
ICAgIAorICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgUHV0QnlPZmZzZXQsCisgICAg
ICAgICAgICBPcEluZm8oZGF0YSksCisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisgICAg
ICAgICAgICBiYXNlLAorICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYg
KHZhcmlhbnQucmVhbGxvY2F0ZXNTdG9yYWdlKCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKE51
a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHksIGJhc2UsIHByb3BlcnR5U3RvcmFnZSk7CisgICAg
CisgICAgICAgIC8vIEZJWE1FOiBQdXRTdHJ1Y3R1cmUgZ29lcyBsYXN0IHVudGlsIHdlIGZpeCBl
aXRoZXIKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MjkyMSBvcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQyOTI0LgorICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRy
YW5zaXRpb24pLCBiYXNlKTsKKyAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29t
cGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlu
bGluZWRQdXRCeUlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZGVmYXVs
dDogeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gfQorfQor
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKICAgICBjbGVh
ckNhY2hlcygpOwpAQCAtNjA2MSw2ICs2MTc2LDUwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRf
YnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2
YXRlX25hbWU6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRl
Y29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2Rl
Lm1fdmFsdWUpOworICAgICAgICAgICAgYm9vbCB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IGZh
bHNlOworCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVz
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGlu
ZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkp
LmJ5VmFsSW5mbzsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUg
aXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51
bGwuCisgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1h
dGlvbi4KKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAorICAgICAgICAgICAgICAgICAg
ICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAgICAgICAgICYmICFieVZhbElu
Zm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5Q29tcGls
ZUFzUHV0QnlPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
YnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZp
ZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVy
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUq
IGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3pl
biksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAg
bG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRy
eUNvbXBpbGVBc1B1dEJ5T2Zmc2V0KQorICAgICAgICAgICAgICAgIGhhbmRsZVB1dFByaXZhdGVO
YW1lKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8oYnl0ZWNvZGUu
bV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTgyNzQsNyArODQzMyw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBC
eXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGls
ZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhp
dEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChi
YXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAg
ICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4NSw3ICs4NDQ0LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAg
ICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3Rv
cmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9y
IGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0
QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5m
byhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcs
IGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5h
c1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQg
YXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2Ug
dGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFjZDY0NjhkZWFj
YmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTMsNiAr
MjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJ
RCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBs
ZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dl
dF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICBy
ZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzog
Ly8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJs
ZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3NTVjNDEzOWNh
Li4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVm
aW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBj
YXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgwM2NmYjlkOTAz
Yjk1NjI3M2Q4ZmUzMjkuLjNmM2Y1ZjJmOTBmMWNkZjVjOWYwZDdhODgxZTk0YjZlMGEyMGJlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVj
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQobm9kZSwgaW5k
ZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGlyZWN0LCBjaGFu
Z2VkLCBhbHJlYWR5SGFuZGxlZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOiB7Ci0gICAgICAgICAgICAg
ICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICAgICAgRWRn
ZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGls
ZCA9IGNoaWxkRWRnZS5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBBU1NFUlQoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNl
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VW
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgQWJzdHJhY3RW
YWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKLQotICAg
ICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBz
dGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAg
ICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAg
ICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwotCi0gICAgICAgICAgICAgICAg
aWYgKCFzdGF0dXMuaXNTaW1wbGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNG
VEwoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGFsbEdv
b2QgPSB0cnVlOwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0
OwotICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7Ci0gICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJp
YW50cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mIGNvbmRpdGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1
cmUobV9ncmFwaC5tX3ZtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9u
LnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KHN0cnVjdHVyZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNl
bGxVc2UpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlm
ICghYWxsR29vZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1
Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5hZGQobmV3U3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFy
aWFudDo6UmVwbGFjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICgh
YWxsR29vZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
LSAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAg
ICAgICAgICAgICAgICBtX2ludGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxv
Y2ssIHRyYW5zaXRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFk
aWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwot
Ci0gICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0
aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCi0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0
YXR1cywgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBzdGF0dXMpKSwKLSAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1
dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50
aWZpZXJOdW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7Ci0K
LSAgICAgICAgICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9t
dWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50
cyA9IHN0YXR1cy52YXJpYW50cygpOwotICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJO
dW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b011bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9
IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdDsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQ
dXRCeU9mZnNldChub2RlLCBpbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGls
ZDIoKSwgaXNEaXJlY3QsIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVkKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtMTQ3MCw2ICsxMzg1LDkzIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB0cnlGb2xkQXNQdXRCeU9mZnNldChO
b2RlKiBub2RlLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEVkZ2UgYmFzZUVkZ2UsIEVkZ2UgdmFs
dWVFZGdlLCBib29sIGlzRGlyZWN0LCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxl
ZCkKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAg
ICAgICBOb2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAg
ICAgICBBU1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFi
c3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAg
ICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7
CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihv
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3Ry
dWN0dXJlU2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlk
KCksCisgICAgICAgICAgICBpc0RpcmVjdCk7CisKKyAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1w
bGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZh
cmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA+IDEgJiYgIW1f
Z3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2hh
bmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Cisg
ICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAgICAgIGZvciAoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAg
ICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFu
dC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29u
ZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0
cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwg
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25vd25DZWxsVXNlKSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlk
VmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwg
bmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5r
aW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAgICAgICAgICAgIG5ld1Nl
dC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUHVzaCBDRkEgb3ZlciB0
aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisgICAgICAgIG1faW50ZXJw
cmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2ludGVycHJldGVyLm9ic2Vy
dmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsKKyAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1NldCkg
PT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7
CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVm
YXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCisKKyAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgRWRnZShiYXNlTm9kZSkp
OworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAx
KSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNl
VmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7CisK
KyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRC
eU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlh
bnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVy
OworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KGRhdGEpOworICAgIH0K
KwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsKICAgICBJbnNlcnRpb25T
ZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIwOGM3OS4uN2RmM2QzNWQ0
MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2Fz
ZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIFB1dFN0
YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYjZjMGJiOGJh
OTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uM2QyMGE3MWE5MTA5ZmQ2ZjZkNzZhNjA3
NzkwZTQ5ODMyY2YxZTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xOTExLDYgKzE5MTEsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENy
ZWF0ZVByb21pc2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgICAgICBjYXNl
IENyZWF0ZUFzeW5jR2VuZXJhdG9yOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAg
ICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGE1Y2RmMWFh
NmYzZDJkOWIxZTg2ZWQ1YmQyMzE4YjYyZDZhYzhlZTkuLmU2YjBlOGVkNGMzODhiODZkZWU4NDM1
MzkwMjY4YzhlZGFjYTJhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01
Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQ
dXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxh
dGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpAQCAtNjE1LDcgKzYxNiw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1B1dEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nl
c3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0g
UHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNldCk7CisgICAgICAgIEFTU0VS
VChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0
QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNldCB8fCBtX29wID09IFB1dFByaXZh
dGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVu
LnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxk
MihiYXNlKTsKQEAgLTYyNSw3ICs2MjYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3Qg
fHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlk
IHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29w
ID09IFB1dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gZGF0YTsKICAgICAg
ICAgbV9vcCA9IE11bHRpUHV0QnlPZmZzZXQ7CiAgICAgfQpAQCAtMTA4Nyw2ICsxMDg4LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNjksMTMgKzIyNzEsMTMgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mby5hczx1
aW50OF90PigpKTsKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5
SWQ6Ci0gICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1
c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OgogICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4Myw2ICsyMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsK
KyAgICAgICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgfHwgb3AoKSA9PSBQdXRQcml2YXRl
TmFtZUJ5SWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCgp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAgICAg
ICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgfHwgb3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5
SWQpCisgICAgICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUobV9v
cEluZm8yLmFzPHVpbnQ4X3Q+KCkpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CisgICAg
fQorCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDY4ODE1ZDMx
ZTM2MDAzNDQzZjEzNWQ1YjM5ZGNiNTJjZDkwMjIwZS4uNzdhN2ViZjFiOTExMzM5MDAzZWJkNzJh
MTZhZGVlODRkNDI5MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtMjA4LDYgKzIwOCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
KSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYz
OS4uNDMzNTI2NTliMmFlMGFjMzU5N2Q5ZDVkYTg4OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVhYmxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIK
ICNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJh
bmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01B
TW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxp
Y2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5k
LnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQg
T3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOWQzZjg5ZTY2ZWFlNjhj
NmNkMTU0M2M3N2M1N2Y1OTBkOTc4NzQ3OC4uZmYzNjI4NDAyMTlhYjQyY2E3MDc1N2NkOWU1ZGNh
ZDlkNmUyZGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzNzgsNiArMTM3OCw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQ
dXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0
UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFm
MWNmNS4uOTE3ZGUwMmZlNmJlMjhiYzNjODc2OTJkYjBhNTdmYzllODQyNzQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYs
OCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJ
ZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6Cisg
ICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVy
dHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFk
ZTVlZDE1NWFjMC4uNDFhOTY3MzhkOGY2MDlmODBkNTQ0ZDAzYzM4ZjdmOTBiNzAxNGRiMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTM1MjQsNiArMzUyNCw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxX
aXRoVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBu
b2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKwor
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5VmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworCisg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgp
ID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0
ZU5hbWVHZW5lcmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkK
K3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisKKyAgICAvLyBXZSBlbWl0IHBy
b3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAg
IC8vIHRvIGNoZWNrIGl0IGhlcmUuCisgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZp
ZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJl
Y3RQcml2YXRlRmllbGRTZXQ7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworCisgICAgbm9SZXN1bHQobm9k
ZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mo
Tm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTE0Mzk2LDcgKzE0NDMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAg
ICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAxYjYzMjE3ZTM2YzcxZWIxZWYwYTM2ZDg5MmMw
ZTYxZDIwZmUzZTUyLi5mMDhkZmU3NjI3MmFiNDQ4NTJiZTQwZDFmZGNjZWQ3MmQzODgyMGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0x
MzYwLDYgKzEzNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxs
V2l0aFN0cmluZyhOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxk
Myk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiwgRWRn
ZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zm
c2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCA1ODIwYmE1YTdmYmViZGQ3MWE2N2Y5ODdhZjEyM2MwM2Q5NWQ1NmNlLi40MzI2ZjIy
MjU2Mjk4NmQ3MzIzOGU4MTdhZmI5NzMwMTU0ZGQ4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI1OTAsNiAr
MjU5MCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAg
Y29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5h
bWVCeUlkKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFs
RGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBiYmNiN2Q0MjJmOWU0YzcwYTMxNmNiMjM5MTliOWExY2EwMDcwYmViLi41ZjdjYjAzZjdk
NzFiYzUzNjRmZWU5ZThmZmRiYjA4OTA2NGVjOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5NDgsNiArMjk0OCwxNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgY29tcGlsZVB1
dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogog
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IDA3MTUzYjhlNDcxMmY2ODI5YjZlYmM2MzIxNzQ2NmY4M2Q0NmMxYzQu
LjcwZTc4Mzk4YzM2YTI4NjhmYWY3MjdjNDhlZjEzOTEyZDhkMzlhNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICAgICAgICAgIC8vIFdlIGVtaXQgSUMgY29k
ZSB3aGVuIHdlIGhhdmUgYSBub24tbnVsbCBjYWNoZWFibGVJZGVudGlmaWVyIGFuZCB3ZSBuZWVk
IHRvIGludHJvZHVjZSBhCisgICAgICAgICAgICAgICAgLy8gYmFycmllciBmb3IgaXQuIE9uIFB1
dFByaXZhdGVOYW1lLCB3ZSBwZXJmb3JtIHN0b3JlIGJhcnJpZXIgZHVyaW5nIHNsb3cgcGF0aCBl
eGVjdXRpb24uCisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2OTZkODQ1ZjgxYzNjNmY5
NzczOTdhLi5iNmE4MmM3MWQ0NGU5NDdjZTI5ZDJlMjc5YjBjMDM2OGZkZmFjMzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTQsNiAr
Mzk0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2Fz
ZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZGE5ZGM1M2Ex
NmYzMThmMDIzMzQxMzk5Nzk2MWVlYWRmNmQxMzU4ZS4uOTM4MTY5NzBiZWFiMDA5ZmJkZWQyNTU5
NzI2NzQzMDVjYzViYTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAxNyw2ICsxMDE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbFdpdGhUaGlz
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAg
ICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICAgICAgY29tcGlsZVB1dFBy
aXZhdGVOYW1lQnlJZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXRvbWlj
c0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNzQW5kOgogICAgICAgICBjYXNlIEF0b21pY3NDb21w
YXJlRXhjaGFuZ2U6CkBAIC0zOTQ1LDYgKzM5NTEsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZh
bHVlKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKCkK
KyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisK
KyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAg
IC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBk
b24ndCBuZWVkCisgICAgICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCisgICAgICAgIGF1dG8gcHV0
S2luZCA9IG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBEaXJlY3RQ
cml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7CisgICAgICAgIGNhY2hl
ZFB1dEJ5SWQobV9ub2RlLCBiYXNlLCB2YWx1ZSwgRUNNQU1vZGU6OnN0cmljdCgpLCBwdXRLaW5k
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpCisgICAgeworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMygpKTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQ
dXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6
IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICB9
CisKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CkBAIC00MTkxLDE0ICs0MjIzLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisg
ICAgdm9pZCBjYWNoZWRQdXRCeUlkKE5vZGUqIG5vZGUsIExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFs
dWUsIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCiAgICAgewotICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwotCi0gICAgICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGU7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCk7CisgICAgICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAogICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CkBAIC00MjE0LDcgKzQyNDIs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25z
KHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAg
ICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAt
NDIzMyw3ICs0MjYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBl
Y21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0
ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTQyNjEsNiArNDI4OCwxNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgIH0KKworICAgIHZv
aWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKTsKKworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgYXV0byBwdXRLaW5k
ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0OworICAg
ICAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIGJhc2UsIHZhbHVlLCBub2RlLT5lY21hTW9kZSgpLCBw
dXRLaW5kKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3
NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUuLjczMTcxMDA5NmNmM2UyNDk4YWU0NWRkYTI2
YWE4MmU3OWNkNDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBA
IC0xMzksOSArMTM5LDkgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CiAjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCmluZGV4IGU4ZmY1MGRjMDE2YjdlMWQ5NDE5NTBiNTY0MjEwNWY5NTk3
NmUyNDguLjgwMzVkNjQyYzljN2QyYjgyN2IwMWY2MzdiMTQ2NDY5M2IzYzAzY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQyNiw2ICs0MjYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRl
cl9ieV9pZCkKQEAgLTU4Nyw2ICs1ODgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9wcml2YXRl
X25hbWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3Bfc3ViKQpAQCAtOTAyLDcgKzkwNCwxMiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6
OmxpbmsoKQogICAgICAgICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+KCk7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJ
bmRleEp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkpOwotICAgICAgICAgICAgYXV0byBi
YWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcCkpOworCisgICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVK
dW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7CisgICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOworICAg
ICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCisgICAgICAg
ICAgICAgICAgYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlv
bkluZm8uYmFkVHlwZUp1bXApKTsKKwogICAgICAgICAgICAgYXV0byBkb25lVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5kb25lVGFyZ2V0KSk7CiAgICAg
ICAgICAgICBhdXRvIG5leHRIb3RQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZh
bENvbXBpbGF0aW9uSW5mby5uZXh0SG90UGF0aFRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBz
bG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8u
c2xvd1BhdGhUYXJnZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDUwOGFmNTBmNjFl
YjMxNmZlMzMzOWE5N2Q1MGVjNTRiMTk1NmM3OTcuLmI0NWJlM2FkNTAyNzkxNTBiNzkyNDNhMDRm
ZmJlYzExZjkzMWY5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNzEsNiArNzEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBPcFB1dEJ5VmFsOwogICAgIHN0cnVjdCBP
cFB1dEJ5VmFsRGlyZWN0OworICAgIHN0cnVjdCBPcFB1dFByaXZhdGVOYW1lOwogICAgIHN0cnVj
dCBPcFB1dFRvU2NvcGU7CiAKICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CkBAIC0xNjEsNiArMTYy
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBC
eVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAs
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisg
ICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwg
bm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25l
VGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87
CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtMjM0LDYgKzI0NCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0
aENhY2hlZElkPE9wPihieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHB1dEtpbmQsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpJVCBqaXQodm0s
IGNvZGVCbG9jayk7CisgICAgICAgICAgICBqaXQubV9ieXRlY29kZUluZGV4ID0gYnlWYWxJbmZv
LT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICB9CisKICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUhhc0luZGV4ZWRQcm9w
ZXJ0eShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwpAQCAtMjU5LDYg
KzI3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
ICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5m
byosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCisg
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZh
bEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKKwogICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyosIFJldHVy
bkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKQEAg
LTQwNiwxMSArNDI1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWlu
ZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
IHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5k
IHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFs
SWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAorICAgICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVO
YW1lLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYg
c2xvd0Nhc2VzKTsKKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2Fz
ZXMpOwogCkBAIC02MDUsNiArNjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wID0gT3BQdXRCeVZhbD4KICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92
YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjg2
LDYgKzcwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25l
d19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZDhmOTViYjBmN2NmYzg5ODJiMzhl
ODcwZTFiYmI3YTFkNDkwZDJhMC4uNzRjZGFmNDMyMjRhZGFjYWViYzI1N2Y1ZjdjMjYxMTI2NjFh
YWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBK
SVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAog
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwg
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQ
dXRLaW5kIHB1dEtpbmQpCiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2Us
IHZhbHVlKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRL
aW5kKHB1dEtpbmQpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihz
Y3JhdGNoKTsKIH0KQEAgLTE1MiwxMiArMTUxLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlv
bl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogewotICAg
IGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6
Tm9uZSkgewotICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgaWYgKG1f
cHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRTZXQpIHsKICAgICAgICAgQVNTRVJUKG1fZWNt
YU1vZGUuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQotICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKKyAgICB9CisKKyAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmlu
ZSkgeworICAgICAgICBBU1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAKICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMjljMmQy
ZTZkMzI4ZGE5Y2IzNzYxMTVkOTkyZWEyYTJjNTBjNTk5NC4uODUzODM1YTM5MzU4NTI5MTI3ZGUy
ZjM5N2I0OTc5OTgyNGUzNmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsxMzAsMTEgQEAgY2xh
c3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1Ymxp
YzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFN
b2RlOjpzdHJpY3QoKSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVD
TUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOwor
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRL
aW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsK
ICAgICAKQEAgLTE0NSw3ICsxNDMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2Rl
IG1fZWNtYU1vZGU7CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7Ci0gICAgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZh
bEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDJmNzZkYjAwNjkyMTE4YWY4NTJlNzA2Mjk1
MDI3NDI5OTg1YWNmYjIuLjQ1ZjdmMGM5MThjZWIzYmRjNzQ3ZTQzZWRjZTMyNmZhMTAyZTY2YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC02OTksMjEgKzY5OSwy
MSBAQCBBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1
dEJ5SWQgb3ApCiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjpl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lO
TElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0
ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsKKyAgICByZXR1cm4g
RUNNQU1vZGU6OnN0cmljdCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLVByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKQorUHJpdmF0ZUZp
ZWxkUHV0S2luZCBKSVQ6OnByaXZhdGVGaWVsZFB1dEtpbmQoT3ApCiB7Ci0gICAgcmV0dXJuIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7CisgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtp
bmQ6Om5vbmUoKTsKIH0KIAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihP
cFB1dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRQdXRLaW5kIEpJ
VDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1l
IG9wKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsK
KyAgICByZXR1cm4gb3AubV9wdXRLaW5kOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDJlY2ZhZGExYzk3
NTkzZGNlY2MwNGUxNjg2ODdlNzMxZGUzZmQ2ZjMuLmZiYjk2MWQ0OGNjZmFmZjlhOWNiYWY4NGNi
ZjgyZmYxZDNhOWZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtNzcwLDExICs3NzAsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJ
bmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50
aWZpZXIpKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJ
bmZvLCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5
SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRl
bnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpOwog
ICAgIH0pOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxl
SWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtNzg2LDcgKzc4
Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlm
aWVyKSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5m
bywgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KTsKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0KTsKICAgICB9KTsK
IH0KIApAQCAtMTEwNSw3ICsxMTA1LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBw
dXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJ
bmZvLCBlY21hTW9kZSk7CiB9CiAKLQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMTE5
LDYgKzExMTgsMTMyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZh
bChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5
VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2
YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIE9wdGlt
aXphdGlvblJlc3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5v
dE9wdGltaXplZDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJ
ZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAg
ICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbEZy
YW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7CisgICAgICAgICAgICBB
U1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOworICAgICAgICAgICAgaWYgKGJ5VmFsSW5m
by0+c2VlbikgeworICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgp
ID09IHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRQ
cml2YXRlTmFtZVdpdGhDYWNoZWRJZCh2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6
T3B0aW1pemVkOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIFNlZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9u
Y2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9u
UmVzdWx0OjpPcHRpbWl6ZWQgJiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJl
c3VsdDo6U2Vlbk9uY2UpIHsKKyAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0
aGFuIDEwIHRpbWVzIHdpdGhvdXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAg
Ly8gbmV2ZXIgbWFrZSB0aGF0IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9u
cyB3b3J0aCBvZiBvcHBvcnR1bml0eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0
IHRoZSBwdXRfcHJpdmF0ZV9uYW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2Ug
Y291bnQgdXAgc2xvd1BhdGhDb3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAg
ICAgICBpZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBv
cHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisK
KyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
KSB7CisgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIHB1dEtpbmQuaXNE
ZWZpbmUoKSA/ICBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25T
ZXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICAKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xh
c3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4g
c3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0
byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5l
KCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVj
dC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBm
aWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAg
ICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29u
c3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNT
dHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAg
ICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKwor
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBz
Y29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nl
c3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2Rz
IGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9
IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VP
YmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXgg
NjVlNzEyNTk1NjgzMGE4ODNlODMzMzA3OTUzOWUyMDQ0MmMwNWQ5NC4uMWNjODljMzcyYjZkMWQy
MDI5YTAzMjQ2MjcxMmJmN2I2MTNlOWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiSklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KQEAgLTE5MSwx
MyArMTkyLDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRw
dHJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZVBy
aXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENh
bGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYzIxYzBlNjFiZWIxNTM4YjYwYWUyYWEzMTcw
YzU1MmEyM2YzNmJmZS4uYzlkYzI0YzkzYTA2MTM4YTdjOTU3NzE1ODRhZmI0NTM2MGIwMDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAi
UHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpA
QCAtMzE2LDcgKzMxNyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBh
IGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTM0Niw3
ICszNDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAg
ICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVj
bWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2Rl
OwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0zNjksNiArMzcwLDQ3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRC
eVZhbEluZm8oKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNo
YWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2Uo
ZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFs
SW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJp
dmF0ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRp
b25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAgICBHUFJS
ZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAg
IEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIs
IGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQg
PSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlv
bkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJCeUlkPigpOwpAQCAtNzAwLDcgKzc0Miw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6
IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzU4LDcgKzE0MDAsNyBAQCBK
SVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVj
b2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xMzc3
LDYgKzE0MTksMTIgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAorSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdp
dGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykK
K3sKKyAgICBhdXRvIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IERp
cmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICByZXR1
cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBwcm9wZXJ0eU5h
bWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJp
ZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7CiAgICAg
QVNTRVJUKG1vZGUgPT0gVW5jb25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2RlID09IFNob3Vs
ZEZpbHRlckJhc2UpOwpAQCAtMTQ2Niw2ICsxNTE0LDQwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvCiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFs
Pihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRy
LCBKSVRBcnJheU1vZGUpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlW
YWw8T3BQdXRCeVZhbERpcmVjdD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAordm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUpCit7CisgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1f
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0
cigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJp
dmF0ZU5hbWU+KCk7CisKKyAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CisgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOworCisgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0UHV0UHJpdmF0ZU5h
bWVXaXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2Fz
ZXMpOworCisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp0aGlzLCBtX2NvZGVCbG9jayk7CisgICAg
cGF0Y2hCdWZmZXIubGluayhzbG93Q2FzZXMsIGJ5VmFsSW5mby0+c2xvd1BhdGhUYXJnZXQpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZUNhc2VzLCBieVZhbEluZm8tPmRvbmVUYXJnZXQpOwor
ICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKKyAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZvLT5leGNlcHRpb25IYW5kbGVyKTsKKwor
ICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX2NhbGxzKSB7CisgICAgICAgIGlmIChj
YWxsU2l0ZS5jYWxsZWUpCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxTaXRlLmZy
b20sIGNhbGxTaXRlLmNhbGxlZSk7CisgICAgfQorICAgIGdlbi5maW5hbGl6ZShwYXRjaEJ1ZmZl
ciwgcGF0Y2hCdWZmZXIpOworCisgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpF
X0NPREVfRk9SX1NUVUIoCisgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1
YlJvdXRpbmVQdHJUYWcsCisgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGgg
Y2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgYnlWYWxJbmZvLT5zdHViSW5m
byA9IGdlbi5zdHViSW5mbygpOworCisgICAgYXV0byBnZW5lcmljRnVuY3Rpb24gPSBieXRlY29k
ZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJp
YyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYzsKKworICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxO
b1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oZ2VuZXJpY0Z1bmN0aW9uKSk7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCmluZGV4IDJhNWVjYzc0MjE0NTUwNDcxNTczYjA5MTk4Y2MxNWViNDk0YmZlZGQu
Ljg0MGRlNTY5OWNhMDJlY2IwOTE5ZTgzYmRkNjgxOWZmYTY5ZmU2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAt
MzMxLDYgKzMzMSw1MCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogfQogCiAKK3ZvaWQgSklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZv
KCk7CisKKyAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMs
IHJlZ1QyKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1w
KCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworCisgICAgTGFiZWwgZG9uZSA9IGxh
YmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxDb21w
aWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1wLCBkb25l
LCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFs
dWU7CisKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9b
bV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRL
aW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEpTVmFsdWVSZWdz
IGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJl
Z1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisK
KyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQ
UigpKTsKKyAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9w
ZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRh
Z0dQUigpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFy
Z2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9u
SW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92
YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTcwOCw3ICs3NTIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwK
ICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwg
ZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25l
KTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDZhYTI2MDZhYTlkYjVjYmI5ZDY3MjgzMjlhOTFlY2Fh
NGZmNDQzMTguLjhlNWVhYzZkOTBiNmJmN2EwOGExODg3MWJhODU5N2Q3MmQ3ZWFkODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTM4LDEwICs1MzgsMTAgQEAgc3Rh
dGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAg
ICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0
ZUZpZWxkQ3JlYXRlKQorICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRE
ZWZpbmUpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0
KQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJp
Y3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFNldCkKKyAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0OwogICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAgICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQpAQCAtNTU0LDEwICs1NTQsMTAgQEAgc3RhdGljIGF1dG8gYXBwcm9wcmlh
dGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwg
UHUKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dE9wdGltaXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVh
dGUpCisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSkKICAg
ICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemU7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkK
LSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFNldCkK
KyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0
T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7
CiAgICAgfQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYwOSw2ICs2MDksOSBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0gRGly
ZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5l
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmJhc2UoKSA9
PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CkBAIC02NzAsNyArNjczLDYg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAg
ICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGly
ZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0
YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVs
bHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY4OCw3ICs2OTAsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0
ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZh
dGVOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdT
dHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0
aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1MjEsOCArMTUyMyw4IEBAIHZvaWQgcmVzZXRQdXRCeUlE
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAg
ICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXpl
OwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5j
dGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKQotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9u
ID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRG
dW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUp
CisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1
bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGY2MTBj
MTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQxM2YuLmM4YzI2MTUyNDNhZDhjMGE2ZGVk
ZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw5ICs1OSw5IEBACiAjaW5j
bHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQdXRCeUlk
RmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJv
dG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0
QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkNGQwOTE2ZmYyZDc2MTQ0MDQz
YTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZlMDZlNmJhYzk3MGY1MzRiM2RiMTI4MjM5
YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1
ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUu
bV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0gICAgICAgIEFT
U0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
ICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJs
ZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwotICAgICAgICBk
b3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKLSAgICAgICAg
dWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2Ny
aXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0
QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKLSAgICAgICAgICAgIGJh
c2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIs
IHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0
RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBMTElOVF9FTkQoKTsKLSAg
ICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJp
bmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQocHJvcGVydHku
aXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAgICAgIGJhc2VP
YmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJ
bmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlzUHJpdmF0ZUZp
ZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2
YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElOVF9FTkQoKTsg
ICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhS
ZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFs
dWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2Jh
bE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgQVNTRVJUKHByb3Bl
cnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSA6IG51
bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRo
aW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdh
eXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Cisg
ICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChieXRlY29kZS5t
X3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZp
ZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYmFzZU9i
amVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5U
X0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1YnNjcmlwdC5pc0NlbGwo
KQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJl
SUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
YiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKKyAgICAgICAg
ICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAgICAgICAgICAgIGlmIChT
dHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkgeworICAgICAgICAgICAg
ICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFs
aWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5p
dHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJv
dG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVk
IHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQg
dGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2Fj
aGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIGlmIChz
bG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywg
dm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09
IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9i
amVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3UG9seVByb3RvKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+aXNPYmplY3Qo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwg
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNo
IGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxlIGNhY2hpbmcKKyAgICAg
ICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9yZSB0byBhbiBleGlzdGlu
ZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAgICAgICAgICAvLyBwYXRo
cyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5
IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1h
eSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAorICAgICAgICAg
ICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFu
c2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIHRyYW5zaXRpb24g
Zm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1
Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRp
ZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9v
bGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXND
ZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNkZGUyNWI5ZmUxYjY4ZDc3
NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgzM2YzYTljMWNjYjhjZGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAt
NzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9w
cml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0
X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0
dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3Nl
dHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFjZWRkNGUwMzgxNDAxNjI5
Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNlZjc5OTYxYTJhMDkwMDFm
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBAIG1hY3JvIHdyaXRlQmFy
cmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKICAgICAgICAg
ZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwg
Z2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdldChjZWxsRmll
bGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwg
Q2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmllck9uQ2VsbFdp
dGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVyRG9uZToKK2Vu
ZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1l
KQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQpAQCAtMTY5
Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwg
T3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQog
ZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUsIE9wUHV0UHJp
dmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQor
ICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisg
ICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJv
cGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBD
ZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikK
KyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0
NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFBy
aXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
cHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFz
ZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRh
CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJ
RFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVp
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5k
V2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQg
bWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVs
b2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2
YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhl
IG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgor
ICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQx
LCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0
W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0
MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkK
K2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4
aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3ZWJiZmFhMzU0My4uZmFm
Zjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3
MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUs
IE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3BhdGNoKCkK
IGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXpl
LCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAub3BQdXRQcml2
YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0
ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0Miwg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBs
b2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAg
YmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2lu
dCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50
IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJp
dmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQx
LCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwg
bV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAg
ICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAg
ICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246CisgICAgIyBUaGUgb25s
eSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAg
Z2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQy
KQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQx
CisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKKyAgICB3cml0
ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQorICAgIGRpc3Bh
dGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNy
byBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAg
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBj
b250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEx
MjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQucHJpbnQoIlNldCIpOwor
ICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRl
RmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJi
NTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0
OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0Mg
eworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0
ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0
S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBz
ZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29u
c3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxk
UHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
KworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAg
OiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8
fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQor
CisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhhNGY5YmUy
MWM1YWFiNmQxYWFiZDAwNWQ4MmZmNzM0MGEyY2EwYWUuLjViOWQxMTZjZWI5ZTZlNzg2ZWM3YThh
M2JlNDJjNmIxMjFmNGE2YjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDgtMjUgIENhaW8gTGltYSAg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEg
bmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RpbmcgdGVzdHMg
dGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVjdXRpb24gaW4KKyAgICAg
ICAgRlRML0RGRy4KKworICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVj
ay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQt
cHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1w
dXQtYnktb2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1vc3IuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHlt
b3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qczog
QWRkZWQuCisKIDIwMjAtMDgtMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJyb3IgZm9yIG9iamVjdCBsaXRlcmFsIG1l
dGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZjVlNjMwNTU3OGRlZjY4YjRlMjZmZmY4ZTcxY2Y5ZTBiOTQ4ZmNiCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmll
ci1pbnNlcnRpb24uanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
LCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbihhLCBlKSB7CisgICAgICAgIGlmIChhICE9
PSBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2Zp
ZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJw
MSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAg
ICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAg
dGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAg
ICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb2xkT2JqZWN0ID0gbmV3IEM7Citmb3IgKDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDUwMDApIHsKKyAgICAgICAgbGV0IGMgPSBuZXcg
QzsKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaSA9
PSA1MDAwKQorICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgb2xkT2JqZWN0LnNldEZpZWxkKHtw
cm9wOiBpfSk7CisgICAgICAgIGVkZW5HQygpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKG9s
ZE9iamVjdC5nZXRGaWVsZCgpLnByb3AsIGkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUt
bmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBp
bGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgx
NGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUt
YnktaWQuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1t
YXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7
CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0
IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOwor
ICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUg
aW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAi
ICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0
aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30K
KworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKwor
ICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAg
ICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAg
ICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAg
ICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAg
ICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0Rmll
bGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUoQy5w
cm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
YyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30pOwor
ICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5n
LXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjAyZmFhODkxYWU0MTQwMWVlYWNmZGFlZDgzNWY0ZTQyZGY0ZTVlNAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1t
dWx0LXB1dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSw1NyBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiLCAiLS11c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDA7CitsZXQg
dHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitsZXQgY29uc3RydWN0RGlmZmVyZW50ID0gZmFs
c2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7
CisgICAgICAgIGlmIChjb25zdHJ1Y3REaWZmZXJlbnQpCisgICAgICAgICAgICB0aGlzLmZvbyA9
IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1ldGhvZChqLCBvdGhlcikgewor
ICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGxldCBvYmogPSB0aGlzOworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKyspCisg
ICAgICAgICAgICBjKys7CisgICAgICAgIGlmIChqICUgMikgeworICAgICAgICAgICAgb3RoZXIu
Zm9vID0gajsKKyAgICAgICAgICAgIG9iaiA9IG90aGVyOworICAgICAgICB9CisgICAgICAgIG9i
ai4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUubWV0aG9kKTsKK25v
SW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IG90aGVyQyA9IG5ldyBDKCk7
CisKK2NvbnN0cnVjdERpZmZlcmVudCA9IHRydWU7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzA7
IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZChpLCBvdGhlckMpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNvbXBp
bGF0aW9uID0gdHJ1ZQorbGV0IGMgPSBuZXcgQygpOworYy5tZXRob2QoMCwgb3RoZXJDKTsKK2Fz
c2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1i
eS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZv
bGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzIwZWM4MDRhOTRmNzFlMzU4
ZWE3YWFlNmE2ZmU4ZGVlMjU4NTUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKQEAg
LTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxp
bmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAo
YSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVy
YXRpb25zID0gMTAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitjbGFzcyBD
IHsKKyAgICAjZmllbGQgPSAwOworCisgICAgbWV0aG9kKCkgeworICAgICAgICBsZXQgYyA9IDA7
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0ZXJh
dGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBjOwor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5l
dyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgYy5tZXRob2QoKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJDb21w
aWxhdGlvbiA9IHRydWUKK2MubWV0aG9kKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQo
KSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJp
Yy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2MjcwYmFiY2EzZDAwN2I3YTc4MzA5NzcyNzk0ZDUx
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5l
cmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbihk
eW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gdGhpcy5p
bml0KCk7CisgICAgCisgICAgICAgIGluaXQoKSB7CisgICAgICAgICAgICB0aGlzW2R5bmFtaWNQ
cm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICBzZXRGaWVs
ZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAg
ICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lu
bGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOwor
fQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3BlcnR5JyAr
IGkpOworICAgIGxldCBjID0gbmV3IENsYXNzKCk7CisgICAgYy5zZXRGaWVsZCgndGVzdCcpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lOTU5OGU3MDE5ZDM3NGQ2MGFhOWQ3Y2RhOWNmNTQyYjcxNjdmM2I0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5q
cwpAQCAtMCwwICsxLDY0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24s
IGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZE92ZXJyaWRlUmV0dXJuID0gZmFs
c2U7CitsZXQgb2JqOworCitjbGFzcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAg
aWYgKHNob3VsZE92ZXJyaWRlUmV0dXJuKQorICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICNmaWVs
ZCA9ICd0ZXN0JzsKKworICBnZXRGaWVsZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAo
aSA+IDEwMDApIHsKKyAgICAgIHNob3VsZE92ZXJyaWRlUmV0dXJuID0gdHJ1ZTsKKyAgICAgIG9i
aiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShD
LnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKG9iaiksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQuc2hv
dWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgbmV3IEMoKTsKKyAgICAgIH0p
OworICB9IGVsc2UgeworICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygp
OworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgICBh
c3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgYy5nZXRGaWVs
ZC5jYWxsKG9iaik7CisgICAgICB9KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDdjZWE2MDAwNWE5
YjVmODY4YTBiNTNiZjIxZDc1YzI0ZmJiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKQEAgLTAsMCArMSw1MCBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwK
KyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93
czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9
Cit9CisKK2xldCBzaG91bGRTdG9yZSA9IGZhbHNlOworCitmdW5jdGlvbiBmb28oKSB7CisgIGNs
YXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgICNmb287CisKKyAgICBpbml0
KCkgeworICAgICAgaWYgKHNob3VsZFN0b3JlKQorICAgICAgICB0aGlzLiNmb28gPSAxMjsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gbmV3IEMoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICBzaG91
bGRTdG9yZSA9IHRydWU7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4g
eworICAgICAgZm9vKCk7CisgICAgfSk7CisgIH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0KK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1j
b21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MzMxNGZhOWU3MDQ5ZjFiODBiMDJmYzBhNzE5NTQ3ZTdhMjFkYjkwCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNv
bXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhy
b3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhj
ZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2Vv
ZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1l
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUg
KyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVuY3Rp
b24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVz
dCc7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
ICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsK
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0
RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2Zv
bycgKyBpKTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5ldyBD
MigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAndGVzdCcpOworYzIuc2V0Rmll
bGQoJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAnZm9vJyk7CisKK2xl
dCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBj
LnNldEZpZWxkLmNhbGwoYzIsICd0ZXN0Jyk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsICgpID0+IHsKKyAgICBjMi5zZXRGaWVsZC5jYWxsKGMsICd0ZXN0Jyk7Cit9KTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY5NWExYWRlMzc2
OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVjMmRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQg
aSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5p
dCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkg
PSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsK
KyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgt
Y29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5
bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2NGNhOWUw
MmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5q
cwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2Zp
ZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisg
ICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7
CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7Cisg
ICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50
ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAg
IGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUg
KyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9
ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZm
ZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkg
eworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNz
RGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAKKyAg
ICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAg
ICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAg
ICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xh
c3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDog
bmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407884</attachid>
            <date>2020-09-03 09:09:25 -0700</date>
            <delta_ts>2020-09-04 05:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200903130922.patch</filename>
            <type>text/plain</type>
            <size>159822</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li4zNWFiZDQ2MmVjZDg5NWRj
ZjhlZDE3ZWU1MzE4NzQ0YjdhZjEzNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDktMDMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGlyZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRl
RmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJ
bmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENv
bXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxP
cFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZh
bERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJ
RCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDkt
MDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJU
SU9OIEZBSUxFRDogdmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBD
dXN0b21HZXR0ZXJTZXR0ZXJUeXBlIC4vYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0
ZDg5NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYw
OGU3MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3
LDcgKzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJ
bnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2
YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjg5
NTVmMjJkZTJmMjYyNzg2ZTdlNjgxM2EyNDA4Yjg4N2U4OWRmLi43MGNkNzM1OWZjZTg1NWY1MDEy
YmZkMThlODU5OTk0OWQ0NjI3MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI1NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0Qjgw
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0
NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5
NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAog
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lz
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRC
ODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2
OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTIsOCArNDE1Miw2IEBACiAJCTg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFy
clBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0g
eWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZF
NjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1
QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5
VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3Myw2ICs0MTcxLDggQEAKIAkJODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGll
cmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1N
YXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRC
OEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjIsNiArNzYyMiw4IEBA
CiAJCQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0Uy
MEJEMDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2Vu
dC5jcHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAv
KiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJB
IC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NDkzLDggKzg0OTUsNiBAQAogCQkJCTBG
OTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0
QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRB
ODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIz
NDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZC
MDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMjksNiArMTAyMjksNyBAQAogCQkJCUNF
MjBCRDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2
ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFF
MDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNjksNyArMTAyNzAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMx
RkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdE
RDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRB
QTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZWQzYThkMWI1MTQzN2I1ZGFkY2QyOTVmNzMyYzBkOWEzM2ZkMDQ2ZS4uNDU1Y2JiOTQwYzEyNTg3
YzQ4YzhiYWNjNDU3ZDFmZWEyZTdlZTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtMjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRl
Y29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0Myw2ICs5NDIsNyBAQCBydW50aW1lL09i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVy
YXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNy
ZWF0aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5j
cHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0
Mzc2YjIwYjYzMjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNl
OWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywK
ICAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQ
dXRLaW5kLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0
LDIwIEBAIG9wIDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJy
aWVyW0pTQ2VsbF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0
S2luZDogUHJpdmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAg
ICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRl
QmFycmllcltKU0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBh
cmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBA
QCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFN
b2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5
NzZiMjJjZWI4Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CkBAIC0yMjcsNiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9w
RW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdl
dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2Us
IHByb3BlcnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAg
ICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAg
ICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmll
bGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjcyZWU3YmYwNWVhMWFmOTg4Mzc0YjU2NzFmOGNkNjhjNjI2ZTFm
YS4uZGVlYmQ5OWYxZDYxODllYWYyZjczMTMxMjM0MjA0MzdiYWFiY2I2MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAg
ICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAg
ICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAg
ICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJr
ZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFv
bGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3By
b3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUg
PQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0K
KyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0
cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMw
Miw2ICsxMzIyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAg
ICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYg
KCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29m
ZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJm
NmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
U2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAi
U3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlW
YWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlT
aXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9v
bGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0
cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0Rp
cmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJp
Y3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdl
dFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBp
c0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAg
ICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5p
c1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAg
cmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRp
YyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBh
dXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0g
ICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0
Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nl
c3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3Qg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBp
c0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmll
bGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0
IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNp
emU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0
czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+
IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBi
b29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVu
YW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2
YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUy
YTU3N2M0ZDJlYzUxZjhhLi44NDI4M2QyNGExZWZkY2I4YTRkNDVkNzEzYTA4ZjBkMjgxYTI0Zjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGIKICAgICByZXR1
cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
dWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMzE2LDcgKzMxNiwxNCBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RydQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAg
ICAgICAvLyBXZSBjYW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0
IG1vZGUgYW5kIGl0CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0
cmFuc2l0aW9uLiBXZSBuZWVkIHRvIHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y3BldGlvbiBpZiBpdCBldmVyIGdldHMgZXhlY3V0ZWQsIHNpbmNlCisgICAgICAgIC8vIHdl
IHdpbGwgYmUgdHJ5aW5nIHRvIHNldCBhIG5vdCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4KKyAg
ICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBoeXBvdGhl
c2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJvdmUgdGhh
dCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNvbWUgc2Fu
aXR5IGNoZWNrcy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZlY2Q3MzkxN2Zk
YTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
ICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFy
eS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFn
cykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJl
Y3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdz
LmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVG
aWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIz
ODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19
OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBB
IGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91
dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0
ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1v
ZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQ
dXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQot
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAg
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJv
b2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNE
aXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1f
ZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsK
LSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVz
cGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJi
M2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRm
NmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERp
cmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVG
aWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiMWE1NDhhMWZmYjAzM2Y5MTEzMTczMWFkYzBiNWE4
ZWJlOGVhMWE2Li5lM2YzZTg1ZDJlMzU3MTUwZTVkNjg0YjE3MjAzMGVjNzU5YTdhZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI1LDcgKzI3MjYsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkp
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ5LDEzICsyNzUw
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVm
aW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYx
NjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlmNTYzZGNhNTAx
YWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyArNDAyOSwyNSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisK
KyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAg
ICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5v
ZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0byBwcml2YXRl
RmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQgPyBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOworICAgICAgICAg
ICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgYm9v
bCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyMTIyYWE0OTVkYTc0M2NkZDVlZmMyZDRhY2FiNzYwNDNiZjMzY2I5Li44Yzg0MmIzNTI3MmYx
MGNjZGM4M2FlZWU4ZGZmOTQxNWU3ZWQ5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1
ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5
dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
IEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25zdCBQdXRCeUlk
U3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewor
ICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZU
TCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5
SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9n
cmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgIAorICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24p
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNl
dERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgYWRkVG9H
cmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gcHV0QnlJ
ZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CisgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxk
UHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAg
ICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFsdWUpOworICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3Ry
dWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdl
OworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0
ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAgICAgICAgIC8v
IHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgIEFTU0VS
VCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAgICAgICAgICAg
aWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNp
dGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICAgICAgICAg
IGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5v
ZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAgICAgLy8gTk9U
RTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291bGQgaW5zZXJ0
IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUgYmVjYXVzZToK
KyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdpbGwgZ2V0IHNj
YW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8vICAgdGhlIG9i
amVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcgdG8gcHV0IGlz
IGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28KKyAgICAgICAg
Ly8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQgd2lsbCBzZWUg
dGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAg
ICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2YWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgYmFzZSwgcHJv
cGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVjdHVyZSBnb2Vz
IGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRvR3JhcGgoUHV0
U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzksNTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIHRyeUNvbXBp
bGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2lu
KCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwg
YnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUs
IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8g
CisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAg
ICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAg
ICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50
aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRp
Zmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0Nv
bnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJl
bnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQpCisgICAgICAgICAgICAg
ICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9w
SW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQ
cm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKQEAgLTc1MDAsNyArNzY1OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1czsK
ICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1aWQsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKQEAgLTgyNzcsNyAr
ODQzNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4OCw3ICs4NDQ3LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUp
OwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZl
IHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAg
IG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJl
IHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2Ug
bWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFj
ZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1
cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBj
YXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0
cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3
NTVjNDEzOWNhLi4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAg
IGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgw
M2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjcyMjM4NTg3ODhhNjY3OTEwOGQ1YTE2YzZjYjEyMTM4
MWNmODE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9v
bCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQo
bm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGly
ZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCksIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVk
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdp
biA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUt
PmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUo
KTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBs
ZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIEFTU0VS
VChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAgICAgICAgICAgICAg
VHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9u
IDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1Zh
bGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29k
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9k
ZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0
cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhp
cyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgICAgIG1faW50
ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOwot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5n
ZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBh
bHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50
IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAgICAgICAgICAgIE11
bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRh
LmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlhbnRz
KCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChk
YXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRC
eUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGlu
ZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgUHJp
dmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzAsNiArMTM4NSw5MyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0
QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdl
LCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxlZCkKKyAg
ICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBO
b2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAgICAgICBB
U1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFic3RyYWN0
VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAgICAgQWJz
dHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7CisKKyAg
ICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJl
U2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCisg
ICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKKyAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NF
UlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAg
ICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29u
ZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRp
b24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBD
aGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25v
d25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9y
VHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAg
ICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
UHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2lu
dGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsK
KyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1f
Z3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24n
dCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMu
CisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0
QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAg
RWRnZShiYXNlTm9kZSkpOworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3Bs
YW4uaXNGVEwoKSk7CisKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRz
ID0gc3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0
KGRhdGEpOworICAgIH0KKwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAg
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIw
OGM3OS4uN2RmM2QzNWQ0MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBS
ZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggYjZjMGJiOGJhOTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uNWViYTdkMWYy
YzY4ZDA0YzkxZWU2MDE0OTFhMTc4ZmNhODAxOWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTA1LDEyICsxOTA1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYTVjZGYxYWE2ZjNkMmQ5YjFl
ODZlZDViZDIzMThiNjJkNmFjOGVlOS4uZTZiMGU4ZWQ0YzM4OGI4NmRlZTg0MzUzOTAyNjhjOGVk
YWNhMmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC02MTUsNyArNjE2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29udmVydFRvUHV0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0g
UHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gg
fHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWVCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQz
KGNoaWxkcmVuLmNoaWxkMigpKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpA
QCAtNjI1LDcgKzYyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRp
UHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09
IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9
PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJp
dmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBtX29wID0g
TXVsdGlQdXRCeU9mZnNldDsKICAgICB9CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2OSwxMyArMjI3MSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkp
OwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAg
ICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90Pigp
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yMjgzLDYgKzIyODUsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBp
ZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBpZiAob3Ao
KSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkKKyAgICAg
ICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisKICAgICBi
b29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNm
MTM1ZDViMzlkY2I1MmNkOTAyMjBlLi43N2E3ZWJmMWI5MTEzMzkwMDNlYmQ3MmExNmFkZWU4NGQ0
MjkwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDgs
NiArMjA4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBt
YWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQdXRQcml2YXRlTmFtZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlH
ZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1
OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUg
IkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgsNiArNDks
NyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBt
X3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50
aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFN
b2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZv
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkg
eyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCog
cHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA5ZDNmODllNjZlYWU2OGM2Y2QxNTQzYzc3
YzU3ZjU5MGQ5Nzg3NDc4Li5mZjM2Mjg0MDIxOWFiNDJjYTcwNzU3Y2Q5ZTVkY2FkOWQ2ZTJkYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3OCw2ICsxMzc4LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRo
VGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZToKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCBiMDdjYmE3MGZlMTljNDEwZjJlZDVhNDA3NmQ4NDZhMjdkMWYxY2Y1Li45MTdk
ZTAyZmU2YmUyOGJjM2M4NzY5MmRiMGE1N2ZjOWU4NDI3NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI2LDYgKzUyNiw4IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVm
aW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBj
YXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCBlMzBkNjZlMDgxOWZjMTQxM2U2ZmNkNGE2MmJjMWRlNWVkMTU1YWMw
Li40MjBlYTk0NmZjMzUyMDMzYTkzN2QyZmVlOWUzNDhlMzhkMmYxMDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzUyNCw2ICsz
NTI0LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5v
ZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworCisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKworICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eVZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOwor
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2Rl
KQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKworICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCisg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERp
cmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisKKyAgICBub1Jlc3VsdChu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFn
cyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTQzOTYsNyArMTQ0MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpT
VmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAg
ICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODky
YzBlNjFkMjBmZTNlNTIuLmYwOGRmZTc2MjcyYWI0NDg1MmJlNDBkMWZkY2NlZDcyZDM4ODIwZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEzNjAsNiArMTM2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNl
bGxXaXRoU3RyaW5nKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hp
bGQzKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBF
ZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBp
bGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlP
ZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgxMjVhZjRlMGExYzM2OGY4ZjRkNWEuLjYwOTUz
MWI4ZjU2NGI5ZDlhYzg2ZmE4ZmFlOGUzMzBmZGQwMDJlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5MCw2
ICsyNTkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLmM2YzI3YzRi
MzgyNTUwOTVmY2Q1NDQ5OWQ4NWJkYWIxZWZmZWEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjk0OCw2ICsyOTQ4LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxl
UHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggMDcxNTNiOGU0NzEyZjY4MjliNmViYzYzMjE3NDY2ZjgzZDQ2YzFj
NC4uNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQzOWE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgLy8gV2UgZW1pdCBJQyBj
b2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlkZW50aWZpZXIgYW5kIHdlIG5l
ZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAgICAvLyBiYXJyaWVyIGZvciBpdC4gT24g
UHV0UHJpdmF0ZU5hbWUsIHdlIHBlcmZvcm0gc3RvcmUgYmFycmllciBkdXJpbmcgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4MGIxNjg0NGFhYmFjZDg1NjY5NmQ4NDVmODFjM2M2
Zjk3NzM5N2EuLmI2YTgyYzcxZDQ0ZTk0N2NlMjlkMmUyNzliMGMwMzY4ZmRmYWMzNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5NCw2
ICszOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2Ug
RmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlZmRjYmI0
ZWI0NmQ3Yzc0N2YzZjY3OWZlYWZiNmZlNzE0MjM4ZTZjLi43YWU0MWUyYzYwNDlhNGNkNzI4ZTAx
NWQ0NDc5MWM3ZjcxZWZiM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xMDE3LDYgKzEwMTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRo
aXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICBjb21waWxlUHV0
UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9t
aWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0Nv
bXBhcmVFeGNoYW5nZToKQEAgLTM5NDUsNiArMzk1MSwzMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
KQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsK
KworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdl
IGRvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICAgICAgYXV0byBw
dXRLaW5kID0gbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICAgICAgY2Fj
aGVkUHV0QnlJZChtX25vZGUsIGJhc2UsIHZhbHVlLCBFQ01BTW9kZTo6c3RyaWN0KCksIHB1dEtp
bmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKKyAgICB7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxk
UHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMg
OiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRy
KDApLCBtX291dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDE5MSwxNCArNDIyMywxMCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHZv
aWQgY2FjaGVkUHV0QnlJZChOb2RlKiBub2RlLCBMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBF
Q01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQogICAgIHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKLQotICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpOworICAgICAgICBBU1NFUlQoaWRlbnRpZmllcik7CiAKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwpAQCAtNDIxNCw3ICs0MjQyLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQyMzMs
NyArNDI2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERp
cmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAg
ICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5l
cmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBk
b25lID0gaml0LmxhYmVsKCk7CkBAIC00MjYxLDYgKzQyODgsMTcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSk7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGF1dG8gcHV0S2luZCA9IG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdDsKKyAgICAgICAg
Y2FjaGVkUHV0QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1Nzc4ZTdk
NTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJl
NzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5
LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2lu
Y2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA3NjI1MjAxOTc4YTJlNmE4OWEzZWE0MTI4ZjY0MDc2Mzc5NTZlODIy
Li45YWQyZjNiZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYyM2ZkZmQ3ZmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
c2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQpCkBAIC01ODcsNiArNTg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1
dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1l
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3N1YikKQEAgLTkwMiw3ICs5MDQsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5r
KCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0byBiYWRU
eXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAg
ICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAgICAgICAg
ICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21w
aWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQ
YXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYxZWIzMTZm
ZTMzMzlhOTdkNTBlYzU0YjE5NTZjNzk3Li5iNDViZTNhZDUwMjc5MTUwYjc5MjQzYTA0ZmZiZWMx
MWY5MzFmOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcxLDYgKzcxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKICAgICBzdHJ1Y3QgT3BQdXRC
eVZhbERpcmVjdDsKKyAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQ
dXRUb1Njb3BlOwogCiAgICAgc3RydWN0IENhbGxSZWNvcmQgewpAQCAtMTYxLDYgKzE2MiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQnlWYWxD
b21waWxhdGlvbkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRI
b3RQYXRoVGFyZ2V0KQorICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQorICAgICAg
ICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAsIG5vdElu
ZGV4SnVtcChub3RJbmRleEp1bXApCisgICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdl
dCkKKyAgICAgICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwogICAg
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcDsKQEAgLTIzNCw2ICsyNDQsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNo
ZWRJZDxPcD4oYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2Rl
QmxvY2spOworICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1OSw2ICsyNzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBS
ZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAorICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisKICAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBKSVRBcnJheU1vZGUpOwogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CkBAIC00MDYs
MTEgKzQyNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHRo
ZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kKE9wKTsKIAogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBl
ciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50
aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dD
YXNlcyk7CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsK
IApAQCAtNjA1LDYgKzYyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Niw2ICs3
MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19p
bmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFlNjFkOTE4NWZlYzc1YmVlZWVhMWRjNDNi
YjZhNDcxZjJiZDdjZTcuLjM4ZTE4ZGJmMWVhMDViOTQ3N2UxOGQ4NmE5Y2RmNmNlMjNkMjRhNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0
QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2lu
ZCBwdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChw
dXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRj
aCk7CiB9CkBAIC0xNTEsMTIgKzE1MCwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1Nz
aUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAo
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUp
IHsKLSAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgIGlmIChtX3B1dEtp
bmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0KSB7CiAgICAgICAgIEFTU0VSVChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgfQorCisgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsK
KyAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQog
CiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDI5YzJkMmU2ZDMy
OGRhOWNiMzc2MTE1ZDk5MmVhMmEyYzUwYzU5OTQuLjg1MzgzNWEzOTM1ODUyOTEyN2RlMmYzOTdi
NDk3OTk4MjRlMzZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMSwxMiArMTMwLDExIEBAIGNsYXNzIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6
c3RyaWN0KCkpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAog
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
YmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9k
ZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7
CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAg
CkBAIC0xNDUsNyArMTQzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2Vj
bWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCAyZjc2ZGIwMDY5MjExOGFmODUyZTcwNjI5NTAyNzQy
OTk4NWFjZmIyLi40NWY3ZjBjOTE4Y2ViM2JkYzc0N2U0M2VkY2UzMjZmYTEwMmU2NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAg
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlk
IG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1v
ZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUg
RUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1l
KQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFN
b2RlOjpzdHJpY3QoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1
dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCk7CiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnBy
aXZhdGVGaWVsZFB1dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkK
IHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAg
cmV0dXJuIG9wLm1fcHV0S2luZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFi
NzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li5mMDZkNTc0ZTkyOTU5NGI0NWIwZjg3M2E2MGE5Yzg4
NjA2MGQ4MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTc3MCwxMSArNzcwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplCiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
KSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywg
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKTsKICAgICB9
KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTc4Niw3ICs3ODYsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFsdWUpOwogfQogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBB
U1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAogICAgICAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERp
cmVjdFByaXZhdGVGaWVsZFB1dCk7CisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBw
dXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFNldCk7CiAgICAgfSk7CiB9CiAK
QEAgLTExMDUsNyArMTEwNSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgcHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywg
ZWNtYU1vZGUpOwogfQogCi0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTExOSw2ICsx
MTE4LDEzMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBPcHRpbWl6YXRp
b25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRp
bWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGlm
IChzdWJzY3JpcHQuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+
Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5kZXgoMCkpOworICAgICAgICAgICAgQVNTRVJU
KCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNl
ZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBw
cm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGlt
aXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBT
ZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3Vs
dDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6
OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAx
MCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8vIG5l
dmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29y
dGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUg
cHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNvdW50
IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAgICAg
aWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0aW1p
emF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisgICAg
aWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewor
ICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVmaW5l
KCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJp
dmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgCisg
ICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxl
eGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmlj
dCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgpKQor
ICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3QtPnB1
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9w
ZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRz
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8g
YW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJv
b2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChi
YXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBi
eVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQg
d2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUg
YWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVl
OworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
YWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDY1ZTcx
MjU5NTY4MzBhODgzZTgzMzMwNzk1MzllMjA0NDJjMDVkOTQuLjFjYzg5YzM3MmI2ZDFkMjAyOWEw
MzI0NjI3MTJiZjdiNjEzZTlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUg
IkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0xOTEsMTMgKzE5
MiwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZp
ZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qp
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVkMTcxOWE0NzM4OTI4YTBmMmM2MWJlM2Uy
ZGRkNDc0M2EuLmIxYWJmMjc3MTAyZDQ2MmU1YzU4YjFhNTI3MWE2ZGZmNmU0OTQzNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByaXZh
dGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTMx
Niw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGlu
IEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zNDYsNyArMzQ3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2
YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9k
ZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAg
ICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0NyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJ
bmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisK
KyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
KyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9u
SW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUp
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAg
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOwor
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBy
ZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKwor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQ
YXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3
ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3Qg
PyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMTM1OCw3ICsx
NDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsK
IApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0UHJp
dmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSBieXRlY29kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBz
bG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVm
aW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7
CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChieXRlY29kZSwgcHV0S2luZCwg
cHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Cit9CisKIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgfHwgbW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYsNiArMTUxNCw0MCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8
T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29k
ZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNl
cywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxv
Y2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRo
VGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25l
VGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIHBh
dGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFu
ZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgeworICAg
ICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhj
YWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxpemUo
cGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZm
ZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVf
bmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBw
b2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFsSW5m
by0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9u
ID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJu
QWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlvbikp
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUzMTNiMmFmMzA4MWViMGY1YzFl
YTRjMzA1NzQ4Li5mMTVjMGQwMTYwMzBkZjU0ZjNjNWRiYjQ4ZTQwMDc5OWJjOWI5NjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIH0KIAog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFk
ZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZh
c3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1w
KTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29k
ZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbElu
Zm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5k
OworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxh
YmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpT
VmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFn
R1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHBy
b3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0
S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0
cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21w
aWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxs
OworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA2YWEyNjA2
YWE5ZGI1Y2JiOWQ2NzI4MzI5YTkxZWNhYTRmZjQ0MzE4Li43ZGMzZWZlYmI4NmNmNTNmYTQ5ZjUw
MzgxYjczMGViOTU5OTJiMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTUzNSwzNCArNTM1LDQyIEBAIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAKIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3QpCiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2Ug
Tm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQot
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJp
Y3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKLSAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwotICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKHNs
b3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFBy
aXZhdGVGaWVsZFN0cmljdDsKKyAgICB9CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0
aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtp
bmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZSkKIHsKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBpZiAocHV0
S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChwdXRLaW5kKSB7CisgICAgY2FzZSBOb3REaXJl
Y3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2
YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmlu
ZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJl
Y3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1
dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7Ci0g
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBB
U1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgfQogfQogCiBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBw
dXRLaW5kKQpAQCAtNjA5LDYgKzYxNyw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoaXNQcm94eSAmJiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0S2lu
ZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVV
cE9uQ2FjaGU7CisKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7
CiAKICAgICAgICAgaWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVh
YmxlUHV0KCkpIHsKQEAgLTY3MCw3ICs2ODEsNiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJv
dG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IE5vdERp
cmVjdCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHV0S2luZCAhPSBEaXJlY3RQcml2
YXRlRmllbGRQdXQgJiYgcHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOwogICAg
ICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGlu
ZyhnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwpAQCAtNjg4LDcgKzY5OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpIHsKKyAgICAgICAgICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQpAQCAtMTUyMSw4
ICsxNTMxLDggQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRG
dW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0IHx8IHVub3B0aW1pemVkRnVu
Y3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKQogICAgICAgICBv
cHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsK
LSAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRQdXRQ
cml2YXRlRmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRC
eUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCi0gICAgICAgIG9wdGltaXplZEZ1bmN0
aW9uID0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAg
IGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZh
dGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRT
ZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKKyAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24g
PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxz
ZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0
ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERl
ZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlv
biA9IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAg
ICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggZjYxMGMxOTc3NDY5ZGNkOGM4ZTMwNDYzMWNhYzc0NmJk
NDI4NDEzZi4uYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2NzQ4NzExNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKQEAgLTU5LDkgKzU5LDkgQEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1
ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhl
Y3V0YWJsZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVG
aWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1
dEJ5VmFsRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFk
b3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
Q2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IGQ0ZDA5MTZmZjJkNzYxNDQwNDNhMzk1ZDNlOGE4MTgzMDcyMDE0NmEuLjc5Nzc3
YTI5ZmUwNmU2YmFjOTcwZjUzNGIzZGIxMjgyMzliYmQ2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTE3Nyw0OCArMTE3NywxMjcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAg
IEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9k
ZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgIGJvb2wgaXNQ
cml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNz
KCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0
KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRB
c1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7
CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4
LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1
dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9
CiAKLSAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1By
aXZhdGVGaWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1
YnNjcmlwdC5hc0RvdWJsZSgpOwotICAgICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChz
dWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlw
dEFzVUludDMyKSkgewotICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
LSAgICAgICAgICAgIExMSU5UX0VORCgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9u
J3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAg
YXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAg
ICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9F
TkQoKTsKIAotICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRl
RmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0
SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVs
c2UgewotICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAg
ICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICAgICAg
ICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYmFzZU9i
amVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKLSAgICAgICAgICAgIExMSU5UX0VORCgpOyAgICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENv
bW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VP
YmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0VORCgpOwog
fQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFBy
aXZhdGVOYW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmll
bGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAg
Ly8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0
IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3Ry
aWN0TW9kZSk7CisgICAgaWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAg
ICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
dmFsdWUsIHNsb3QpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRL
aW5kLmlzU2V0KCkpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAg
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkK
KyAgICAgICAgJiYgc3Vic2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+
cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7
CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUodm0pOworICAgICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0
eVNsb3Q6Ok5ld1Byb3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJ
RCgpOworCisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9s
eVByb3RvKGEsIGIpKSB7CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJl
ZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgi
RGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAg
IGItPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2
bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAw
OworICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRh
dGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2Vs
bCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1
Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90
LmJhc2UoKSkgeworICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xv
dDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW5ld1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91
c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3Ry
dWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0Jl
ZW5JbnZhbGlkYXRlZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5
UHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3Rv
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlw
ZUNoYWluICYmICFzYXdQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQob2xkU3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVj
dHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29k
ZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBhc3NlcnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9y
Z2V0IHRvIGRpc2FibGUgY2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNp
dGlvbiB0aGVuIHN0b3JlIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBh
bW9uZworICAgICAgICAgICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVz
LiBJZiB3ZSByZWlmeSBhIGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAg
IC8vIHRvIGRpc2FibGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBS
ZXBsYWNlIElDIGRvZXMgbm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwg
dGhlc2UgdHlwZXMgb2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisg
ICAgICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgICAgIG5ld1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZt
LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJl
LT5pZCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0
KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JF
R0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmlu
ZGV4IDZjMzA4ZDlmM2RkZTI1YjlmZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhh
Nzg3ODFlMThjYmZlODMzZjNhOWMxY2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
aW5kZXggZWJkMzZiYWNlZGQ0ZTAzODE0MDE2MjlmOTZhMTE2NWExZTdlOTM2Ni4uYTYwMmFiZjAz
MjgyYjEyMGQzYzYxY2VmNzk5NjFhMmEwOTAwMWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYx
NCw2ICs2MTQsMTMgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCBy
ZWxvYWRBZnRlclNsb3dQYXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJy
aWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFm
dGVyU2xvd1BhdGgpCisgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRv
bmUpCisgICAgd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93
UGF0aCkKKy53cml0ZUJhcnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3Bl
cmFuZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQx
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0
MiwgLndyaXRlQmFycmllckRvbmUpCkBAIC0xNjkzLDYgKzE3MDAsNDggQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhz
aXplLCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFBy
aXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFt
ZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBP
cFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEg
dDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2Ug
aGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVj
dHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5h
bWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQ
dXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNl
LCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1l
dGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdl
dChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MSwgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5v
cFB1dE5vdFRyYW5zaXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBp
cyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0
UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9w
cml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2ZmUxNzMwNzhjYWMzYzFj
YzE5MTQ4MDYzNmQyNzdlYmJmYWEzNTQzLi5mYWZmNzQyM2ZhMTU1Y2E1MjhjNzVkOGM0OWE2ZmZj
NGIzOGE4ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3B1dF9wcml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVT
bG93KQorICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbChzaXplLCB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0
NSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0
dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAu
b3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFk
YXRhOjptX3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVO
YW1lU2xvdworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2Jq
ZWN0IGJhc2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBt
ZXRhZGF0YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3Ry
dWN0dXJlSURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAg
IHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMg
UmVsb2FkIG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAg
ICAjIFJlbG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0
Tm90VHJhbnNpdGlvbjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQw
LCB3aGljaCBob2xkcyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFt
ZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDAsIHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0
LCBtX2Jhc2UsIG1fdmFsdWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNs
b3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkK
KyAgICBkaXNwYXRjaCgpCitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxi
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTEyMzc3YTliMTNlOTFiZmYzY2EwNzJkMmQzNzkw
NmY5ZTZjYjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKKworI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBQcml2YXRlRmllbGRQ
dXRLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKGlzU2V0KCkp
CisgICAgICAgIG91dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQo
IkRlZmluZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNk
YzRjYTMwNDhlYzdkYTAxZGJhMGQwYWFmYzg0YmI1Njc1MmUzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50
U3RyZWFtOworfTsKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQdXRL
aW5kIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IFNldCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90
IERlZmluZSA9IDI7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVs
ZFB1dEtpbmQgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kKGJ5dGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIG5v
bmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGljIGNv
bnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1
dEtpbmQoU2V0KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBk
ZWZpbmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vbmU7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ID09IFNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUgPT0gRGVmaW5lOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRT
dHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0
S2luZCh1aW50OF90IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAg
ICAgICBBU1NFUlQobV92YWx1ZSA9PSBOb25lIHx8IG1fdmFsdWUgPT0gU2V0IHx8IG1fdmFsdWUg
PT0gRGVmaW5lLCBtX3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzkyNTQyZjkyZTVmN2FiMDJhYmM3YTdkM2MxODk0NjZiN2Q0
ZGUwYS4uZTE5ZWNhZjNiNzFhNjQwZDZmOTZlYTdhODhlZTUyMDE2MjYyOTRlYSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAyMC0wOS0wMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bRVNOZXh0XSBDcmVhdGUgYSBuZXcgb3Bjb2RlIHRvIGhhbmRsZSBwcml2YXRl
IGZpZWxkcyBzdG9yZS9kZWZpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkanVzdGluZyB0ZXN0cyB0aGF0IGVtaXQgYGdldF9wcml2YXRlX25hbWVg
IHRvIGF2b2lkIGV4ZWN1dGlvbiBpbgorICAgICAgICBGVEwvREZHLgorCisgICAgICAgICogc3Ry
ZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0
LWJ5LWlkLWRpcmVjdC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0
ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0cnVj
dHVyZS10cmFzaXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1i
eS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdl
bmVyaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFs
aWQtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1p
bnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0
YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qczogQWRkZWQuCisKIDIwMjAtMDktMDIgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgdGVz
dDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hl
Y2stYmFycmllci1pbnNlcnRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUt
bmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjVlNjMwNTU3OGRl
ZjY4YjRlMjZmZmY4ZTcxY2Y5ZTBiOTQ4ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMKQEAg
LTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhp
Y0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbihhLCBlKSB7CisgICAgICAgIGlmIChhICE9PSBlKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93
czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9
Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7
CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOwor
CisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOwor
ICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisK
KyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7
CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNl
dEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZp
ZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
bm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworCitsZXQgb2xkT2JqZWN0ID0gbmV3IEM7Citmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICBpZiAoaSA8IDUwMDApIHsKKyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgYy5zZXRG
aWVsZChpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaSA9PSA1MDAwKQorICAgICAgICAg
ICAgZ2MoKTsKKyAgICAgICAgb2xkT2JqZWN0LnNldEZpZWxkKHtwcm9wOiBpfSk7CisgICAgICAg
IGVkZW5HQygpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKG9sZE9iamVjdC5nZXRGaWVsZCgp
LnByb3AsIGkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNv
bXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9
MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1
bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1l
ICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4
Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmll
bGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAx
IiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAg
IHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0
aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAg
ICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9
CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAg
ICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBj
LnNldEZpZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5z
ZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2
YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUt
YnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQx
NzJhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1u
YW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMKQEAgLTAsMCArMSw1NCBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihl
eGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2Vw
dGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRl
ZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBD
IHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGxl
dCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFycltpICUg
M107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisg
ICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7
CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBp
OworICAgICAgICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNm
aWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitm
b3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4g
NTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9u
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFk
ZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ZDZlNDUzNjRiMDJiNDM1NTRl
ZDM2MmQ0YWE4ZGUxMGJjNDdmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10cmFzaXRpb24u
anMKQEAgLTAsMCArMSw1MCBAQAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vz
c0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9u
KGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2Vw
dGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhj
ZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1
dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitjbGFzcyBCYXNlIHsKKyAgY29u
c3RydWN0b3IoKSB7CisgICAgcmV0dXJuIHt9OworICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjZmllbGQgPSAwOworCisgICAgZ2V0RmllbGQoY2hhbmdlUmVjaWV2ZXIpIHsK
KyAgICAgICAgbGV0IHIgPSB0aGlzOworICAgICAgICBpZiAoY2hhbmdlUmVjaWV2ZXIpIHsKKyAg
ICAgICAgICAgIHIgPSB7fTsKKyAgICAgICAgfQorCisgICAgICAgIHIuI2ZpZWxkID0gJ2Jhcic7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5l
dyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDkw
MDApCisgICAgICAgIEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwoYywgZmFsc2UpOworICAgIGVs
c2UgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChjLCB0cnVlKTsKKyAgICAgICAgfSk7
CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNl
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMDJmYWE4OTFhZTQxNDAxZWVhY2ZkYWVkODM1ZjRlNDJkZjRlNWU0
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25z
dGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDU3IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmc9
ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUp
IHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaXRlcmF0aW9u
cyA9IDEwMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2xldCBjb25zdHJ1
Y3REaWZmZXJlbnQgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgp
OworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGNvbnN0cnVjdERpZmZlcmVudCkKKyAgICAg
ICAgICAgIHRoaXMuZm9vID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbWV0
aG9kKGosIG90aGVyKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgbGV0IG9iaiA9IHRo
aXM7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0
ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgaWYgKGogJSAyKSB7Cisg
ICAgICAgICAgICBvdGhlci5mb28gPSBqOworICAgICAgICAgICAgb2JqID0gb3RoZXI7CisgICAg
ICAgIH0KKyAgICAgICAgb2JqLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3Rv
dHlwZS5tZXRob2QpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQg
b3RoZXJDID0gbmV3IEMoKTsKKworY29uc3RydWN0RGlmZmVyZW50ID0gdHJ1ZTsKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAzMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMubWV0
aG9kKGksIG90aGVyQyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDApOwor
fQorCit0cmlnZ2VyQ29tcGlsYXRpb24gPSB0cnVlCitsZXQgYyA9IG5ldyBDKCk7CitjLm1ldGhv
ZCgwLCBvdGhlckMpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlvbnMp
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50
LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3
MjBlYzgwNGE5NGY3MWUzNThlYTdhYWU2YTZmZThkZWUyNTg1NTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0
LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxs
b3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIs
ICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAg
IH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRpb24g
PSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IDA7CisKKyAgICBtZXRob2QoKSB7Cisg
ICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxh
dGlvbiAmJiBpIDwgaXRlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAgICB0
aGlzLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVs
ZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsK
KyAgICBjLm1ldGhvZCgpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsK
K30KKwordHJpZ2dlckNvbXBpbGF0aW9uID0gdHJ1ZQorYy5tZXRob2QoKTsKK2Fzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNmMyOTljNjYyNzBiYWJjYTNkMDA3
YjdhNzgzMDk3NzI3OTRkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEs
IGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBj
bGFzc0RlY2xhcmF0aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAg
ICAgIHRoaXNbZHluYW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQor
CisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAg
ICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
I2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
CisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJh
dGlvbigncHJvcGVydHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNl
dEZpZWxkKCd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0
Jyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52
YWxpZC1kZWZpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQt
ZGVmaW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NTk4ZTcwMTlkMzc0ZDYwYWE5ZDdjZGE5Y2Y1NDJiNzE2
N2YzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWludmFsaWQtZGVmaW5lLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7
CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1
bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2Vw
dGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93
OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0
IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkT3Zl
cnJpZGVSZXR1cm4gPSBmYWxzZTsKK2xldCBvYmo7CisKK2NsYXNzIEIgeworICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICBpZiAoc2hvdWxkT3ZlcnJpZGVSZXR1cm4pCisgICAgICAgICAgICBy
ZXR1cm4gb2JqOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0
ZW5kcyBCIHsKKyAgI2ZpZWxkID0gJ3Rlc3QnOworCisgIGdldEZpZWxkKCkgeworICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vSW5s
aW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
K25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgICAgc2hvdWxkT3ZlcnJpZGVSZXR1cm4g
PSB0cnVlOworICAgICAgb2JqID0ge307CisgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICBh
c3NlcnQuc2FtZVZhbHVlKEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwob2JqKSwgJ3Rlc3QnKTsK
KyAgICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgICBu
ZXcgQygpOworICAgICAgfSk7CisgIH0gZWxzZSB7CisgICAgICBsZXQgb2JqID0ge307CisgICAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKKyAgICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICAgICAgICBjLmdldEZpZWxkLmNhbGwob2JqKTsKKyAgICAgIH0pOworICB9Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjM0N2NlYTYwMDA1YTliNWY4NjhhMGI1M2JmMjFkNzVjMjRmYmIwOAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpA
QCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRp
ZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBl
KSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1
bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1l
ICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4
Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZFN0b3JlID0gZmFsc2U7CisKK2Z1bmN0
aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAg
I2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3RvcmUpCisgICAgICAgIHRo
aXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcgQygpOworfQorbm9Jbmxp
bmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlmIChpID4g
MTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3co
VHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAgfSBlbHNlIHsKKyAg
ICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlmMWI4MGIwMmZjMGE3MTk1NDdl
N2EyMWRiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCAr
MSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAg
IHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7
CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAg
ICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5j
dG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0
aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAg
ICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIGdldEZpZWxk
KCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQor
ICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5v
RlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorCitsZXQgQyA9
IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0
ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsK
KworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICd0
ZXN0Jyk7CitjMi5zZXRGaWVsZCgnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxk
KCksICdmb28nKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgKCkgPT4geworICAgIGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rlc3QnKTsKK30pOworCithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLnNldEZpZWxkLmNhbGwoYywgJ3Rl
c3QnKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LW9zci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExNjk1YTFhZGUzNzY5YzYxNGRkYzkzMDEzMmVhZjg4ZTIxZWMyZGEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpAQCAtMCwwICsx
LDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUi
LCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
c2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsK
KyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5p
bml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAgICAg
ICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisg
ICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAg
Z2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lu
bGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVs
ZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRG
aWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZp
ZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28n
ICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
cG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjZmM1MzY0Y2E5ZTAyY2U5NTIzYmFjNDE1YzE4MDE0NmUxNTY4OWQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgt
Y29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7
CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitj
bGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAg
ICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICAg
ICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRo
aXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
K25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsg
aSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFu
dC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YTMyOTdiZWQ4MmQ3YzBjN2U1MmQ1NWE3NWU1YWMy
MTE4MWI3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworY2xhc3Mg
QyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0
aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRl
bnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJl
bnQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDM3ZDgxN2VkZTE0YTIwMzVmMzVhNjg4YmE0
MTVkYTE1ZmQzNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30K
KworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
I2ZpZWxkOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNm
aWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlv
bik7CitsZXQgQzEgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBjbGFzc0RlY2xhcmF0
aW9uKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0g
aSAlIDIgPyBuZXcgQzEgOiBuZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVzdCcgKyBpKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407964</attachid>
            <date>2020-09-04 05:56:15 -0700</date>
            <delta_ts>2020-09-04 08:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200904095552.patch</filename>
            <type>text/plain</type>
            <size>159979</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li4zNWFiZDQ2MmVjZDg5NWRj
ZjhlZDE3ZWU1MzE4NzQ0YjdhZjEzNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDktMDMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGlyZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRl
RmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJ
bmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENv
bXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxP
cFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZh
bERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJ
RCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDkt
MDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJU
SU9OIEZBSUxFRDogdmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBD
dXN0b21HZXR0ZXJTZXR0ZXJUeXBlIC4vYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0
ZDg5NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYw
OGU3MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3
LDcgKzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJ
bnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2
YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjg5
NTVmMjJkZTJmMjYyNzg2ZTdlNjgxM2EyNDA4Yjg4N2U4OWRmLi43MGNkNzM1OWZjZTg1NWY1MDEy
YmZkMThlODU5OTk0OWQ0NjI3MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI1NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0Qjgw
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0
NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5
NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAog
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lz
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRC
ODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2
OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTIsOCArNDE1Miw2IEBACiAJCTg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFy
clBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0g
eWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZF
NjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1
QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5
VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3Myw2ICs0MTcxLDggQEAKIAkJODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGll
cmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1N
YXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRC
OEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjIsNiArNzYyMiw4IEBA
CiAJCQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0Uy
MEJEMDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2Vu
dC5jcHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAv
KiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJB
IC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NDkzLDggKzg0OTUsNiBAQAogCQkJCTBG
OTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0
QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRB
ODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIz
NDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZC
MDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMjksNiArMTAyMjksNyBAQAogCQkJCUNF
MjBCRDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2
ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFF
MDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNjksNyArMTAyNzAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMx
RkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdE
RDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRB
QTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZWQzYThkMWI1MTQzN2I1ZGFkY2QyOTVmNzMyYzBkOWEzM2ZkMDQ2ZS4uNDU1Y2JiOTQwYzEyNTg3
YzQ4YzhiYWNjNDU3ZDFmZWEyZTdlZTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtMjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRl
Y29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0Myw2ICs5NDIsNyBAQCBydW50aW1lL09i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVy
YXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNy
ZWF0aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5j
cHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0
Mzc2YjIwYjYzMjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNl
OWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywK
ICAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQ
dXRLaW5kLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0
LDIwIEBAIG9wIDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJy
aWVyW0pTQ2VsbF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0
S2luZDogUHJpdmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAg
ICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRl
QmFycmllcltKU0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBh
cmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBA
QCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFN
b2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5
NzZiMjJjZWI4Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CkBAIC0yMjcsNiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9w
RW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdl
dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2Us
IHByb3BlcnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAg
ICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAg
ICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmll
bGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjcyZWU3YmYwNWVhMWFmOTg4Mzc0YjU2NzFmOGNkNjhjNjI2ZTFm
YS4uZGVlYmQ5OWYxZDYxODllYWYyZjczMTMxMjM0MjA0MzdiYWFiY2I2MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAg
ICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAg
ICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAg
ICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJr
ZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFv
bGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3By
b3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUg
PQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0K
KyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0
cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMw
Miw2ICsxMzIyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAg
ICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYg
KCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29m
ZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJm
NmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
U2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAi
U3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlW
YWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlT
aXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9v
bGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0
cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0Rp
cmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJp
Y3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdl
dFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBp
c0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAg
ICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5p
c1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAg
cmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRp
YyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBh
dXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0g
ICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0
Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nl
c3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3Qg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBp
c0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmll
bGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0
IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNp
emU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0
czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+
IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBi
b29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVu
YW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2
YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUy
YTU3N2M0ZDJlYzUxZjhhLi44NDI4M2QyNGExZWZkY2I4YTRkNDVkNzEzYTA4ZjBkMjgxYTI0Zjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGIKICAgICByZXR1
cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
dWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMzE2LDcgKzMxNiwxNCBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RydQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAg
ICAgICAvLyBXZSBjYW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0
IG1vZGUgYW5kIGl0CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0
cmFuc2l0aW9uLiBXZSBuZWVkIHRvIHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y3BldGlvbiBpZiBpdCBldmVyIGdldHMgZXhlY3V0ZWQsIHNpbmNlCisgICAgICAgIC8vIHdl
IHdpbGwgYmUgdHJ5aW5nIHRvIHNldCBhIG5vdCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4KKyAg
ICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBoeXBvdGhl
c2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJvdmUgdGhh
dCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNvbWUgc2Fu
aXR5IGNoZWNrcy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZlY2Q3MzkxN2Zk
YTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
ICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFy
eS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFn
cykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJl
Y3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdz
LmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVG
aWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIz
ODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19
OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBB
IGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91
dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0
ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1v
ZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQ
dXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQot
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAg
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJv
b2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNE
aXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1f
ZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsK
LSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVz
cGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJi
M2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRm
NmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERp
cmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVG
aWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiMWE1NDhhMWZmYjAzM2Y5MTEzMTczMWFkYzBiNWE4
ZWJlOGVhMWE2Li5lM2YzZTg1ZDJlMzU3MTUwZTVkNjg0YjE3MjAzMGVjNzU5YTdhZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI1LDcgKzI3MjYsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkp
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ5LDEzICsyNzUw
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVm
aW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYx
NjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlmNTYzZGNhNTAx
YWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyArNDAyOSwyNSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisK
KyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAg
ICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5v
ZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0byBwcml2YXRl
RmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQgPyBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOworICAgICAgICAg
ICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgYm9v
bCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyMTIyYWE0OTVkYTc0M2NkZDVlZmMyZDRhY2FiNzYwNDNiZjMzY2I5Li44Yzg0MmIzNTI3MmYx
MGNjZGM4M2FlZWU4ZGZmOTQxNWU3ZWQ5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1
ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5
dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
IEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25zdCBQdXRCeUlk
U3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewor
ICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZU
TCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5
SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9n
cmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgIAorICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24p
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNl
dERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgYWRkVG9H
cmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gcHV0QnlJ
ZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CisgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxk
UHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAg
ICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFsdWUpOworICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3Ry
dWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdl
OworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0
ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAgICAgICAgIC8v
IHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgIEFTU0VS
VCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAgICAgICAgICAg
aWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNp
dGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICAgICAgICAg
IGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5v
ZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAgICAgLy8gTk9U
RTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291bGQgaW5zZXJ0
IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUgYmVjYXVzZToK
KyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdpbGwgZ2V0IHNj
YW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8vICAgdGhlIG9i
amVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcgdG8gcHV0IGlz
IGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28KKyAgICAgICAg
Ly8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQgd2lsbCBzZWUg
dGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAg
ICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2YWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgYmFzZSwgcHJv
cGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVjdHVyZSBnb2Vz
IGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRvR3JhcGgoUHV0
U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzksNTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIHRyeUNvbXBp
bGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2lu
KCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwg
YnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUs
IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8g
CisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAg
ICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAg
ICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50
aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRp
Zmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0Nv
bnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJl
bnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQpCisgICAgICAgICAgICAg
ICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9w
SW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQ
cm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKQEAgLTc1MDAsNyArNzY1OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1czsK
ICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1aWQsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKQEAgLTgyNzcsNyAr
ODQzNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4OCw3ICs4NDQ3LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUp
OwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZl
IHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAg
IG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJl
IHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2Ug
bWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFj
ZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1
cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBj
YXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0
cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3
NTVjNDEzOWNhLi4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAg
IGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgw
M2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjcyMjM4NTg3ODhhNjY3OTEwOGQ1YTE2YzZjYjEyMTM4
MWNmODE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9v
bCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQo
bm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGly
ZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCksIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVk
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdp
biA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUt
PmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUo
KTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBs
ZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIEFTU0VS
VChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAgICAgICAgICAgICAg
VHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9u
IDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1Zh
bGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29k
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9k
ZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0
cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhp
cyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgICAgIG1faW50
ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOwot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5n
ZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBh
bHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50
IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAgICAgICAgICAgIE11
bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRh
LmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlhbnRz
KCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChk
YXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRC
eUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGlu
ZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgUHJp
dmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzAsNiArMTM4NSw5MyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0
QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdl
LCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxlZCkKKyAg
ICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBO
b2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAgICAgICBB
U1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFic3RyYWN0
VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAgICAgQWJz
dHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7CisKKyAg
ICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJl
U2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCisg
ICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKKyAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NF
UlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAg
ICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29u
ZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRp
b24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBD
aGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25v
d25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9y
VHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAg
ICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
UHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2lu
dGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsK
KyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1f
Z3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24n
dCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMu
CisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0
QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAg
RWRnZShiYXNlTm9kZSkpOworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3Bs
YW4uaXNGVEwoKSk7CisKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRz
ID0gc3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0
KGRhdGEpOworICAgIH0KKwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAg
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIw
OGM3OS4uN2RmM2QzNWQ0MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBS
ZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggYjZjMGJiOGJhOTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uNWViYTdkMWYy
YzY4ZDA0YzkxZWU2MDE0OTFhMTc4ZmNhODAxOWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTA1LDEyICsxOTA1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYTVjZGYxYWE2ZjNkMmQ5YjFl
ODZlZDViZDIzMThiNjJkNmFjOGVlOS4uZTZiMGU4ZWQ0YzM4OGI4NmRlZTg0MzUzOTAyNjhjOGVk
YWNhMmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC02MTUsNyArNjE2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29udmVydFRvUHV0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0g
UHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gg
fHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWVCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQz
KGNoaWxkcmVuLmNoaWxkMigpKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpA
QCAtNjI1LDcgKzYyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRp
UHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09
IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9
PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJp
dmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBtX29wID0g
TXVsdGlQdXRCeU9mZnNldDsKICAgICB9CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2OSwxMyArMjI3MSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkp
OwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAg
ICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90Pigp
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yMjgzLDYgKzIyODUsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBp
ZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBpZiAob3Ao
KSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkKKyAgICAg
ICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisKICAgICBi
b29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNm
MTM1ZDViMzlkY2I1MmNkOTAyMjBlLi43N2E3ZWJmMWI5MTEzMzkwMDNlYmQ3MmExNmFkZWU4NGQ0
MjkwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDgs
NiArMjA4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBt
YWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQdXRQcml2YXRlTmFtZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlH
ZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1
OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUg
IkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgsNiArNDks
NyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBt
X3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50
aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFN
b2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZv
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkg
eyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCog
cHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA5ZDNmODllNjZlYWU2OGM2Y2QxNTQzYzc3
YzU3ZjU5MGQ5Nzg3NDc4Li5mZjM2Mjg0MDIxOWFiNDJjYTcwNzU3Y2Q5ZTVkY2FkOWQ2ZTJkYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3OCw2ICsxMzc4LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRo
VGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZToKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCBiMDdjYmE3MGZlMTljNDEwZjJlZDVhNDA3NmQ4NDZhMjdkMWYxY2Y1Li45MTdk
ZTAyZmU2YmUyOGJjM2M4NzY5MmRiMGE1N2ZjOWU4NDI3NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI2LDYgKzUyNiw4IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVm
aW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBj
YXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCBlMzBkNjZlMDgxOWZjMTQxM2U2ZmNkNGE2MmJjMWRlNWVkMTU1YWMw
Li40MjBlYTk0NmZjMzUyMDMzYTkzN2QyZmVlOWUzNDhlMzhkMmYxMDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzUyNCw2ICsz
NTI0LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5v
ZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworCisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKworICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eVZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOwor
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2Rl
KQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKworICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCisg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERp
cmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisKKyAgICBub1Jlc3VsdChu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFn
cyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTQzOTYsNyArMTQ0MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpT
VmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAg
ICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODky
YzBlNjFkMjBmZTNlNTIuLmYwOGRmZTc2MjcyYWI0NDg1MmJlNDBkMWZkY2NlZDcyZDM4ODIwZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEzNjAsNiArMTM2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNl
bGxXaXRoU3RyaW5nKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hp
bGQzKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBF
ZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBp
bGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlP
ZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgxMjVhZjRlMGExYzM2OGY4ZjRkNWEuLjYwOTUz
MWI4ZjU2NGI5ZDlhYzg2ZmE4ZmFlOGUzMzBmZGQwMDJlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5MCw2
ICsyNTkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLmM2YzI3YzRi
MzgyNTUwOTVmY2Q1NDQ5OWQ4NWJkYWIxZWZmZWEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjk0OCw2ICsyOTQ4LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxl
UHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggMDcxNTNiOGU0NzEyZjY4MjliNmViYzYzMjE3NDY2ZjgzZDQ2YzFj
NC4uNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQzOWE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgLy8gV2UgZW1pdCBJQyBj
b2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlkZW50aWZpZXIgYW5kIHdlIG5l
ZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAgICAvLyBiYXJyaWVyIGZvciBpdC4gT24g
UHV0UHJpdmF0ZU5hbWUsIHdlIHBlcmZvcm0gc3RvcmUgYmFycmllciBkdXJpbmcgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4MGIxNjg0NGFhYmFjZDg1NjY5NmQ4NDVmODFjM2M2
Zjk3NzM5N2EuLmI2YTgyYzcxZDQ0ZTk0N2NlMjlkMmUyNzliMGMwMzY4ZmRmYWMzNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5NCw2
ICszOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2Ug
RmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlZmRjYmI0
ZWI0NmQ3Yzc0N2YzZjY3OWZlYWZiNmZlNzE0MjM4ZTZjLi43YWU0MWUyYzYwNDlhNGNkNzI4ZTAx
NWQ0NDc5MWM3ZjcxZWZiM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xMDE3LDYgKzEwMTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRo
aXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICBjb21waWxlUHV0
UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9t
aWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0Nv
bXBhcmVFeGNoYW5nZToKQEAgLTM5NDUsNiArMzk1MSwzMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
KQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsK
KworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdl
IGRvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICAgICAgYXV0byBw
dXRLaW5kID0gbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICAgICAgY2Fj
aGVkUHV0QnlJZChtX25vZGUsIGJhc2UsIHZhbHVlLCBFQ01BTW9kZTo6c3RyaWN0KCksIHB1dEtp
bmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKKyAgICB7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxk
UHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMg
OiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRy
KDApLCBtX291dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDE5MSwxNCArNDIyMywxMCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHZv
aWQgY2FjaGVkUHV0QnlJZChOb2RlKiBub2RlLCBMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBF
Q01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQogICAgIHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKLQotICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpOworICAgICAgICBBU1NFUlQoaWRlbnRpZmllcik7CiAKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwpAQCAtNDIxNCw3ICs0MjQyLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQyMzMs
NyArNDI2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERp
cmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAg
ICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5l
cmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBk
b25lID0gaml0LmxhYmVsKCk7CkBAIC00MjYxLDYgKzQyODgsMTcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSk7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGF1dG8gcHV0S2luZCA9IG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdDsKKyAgICAgICAg
Y2FjaGVkUHV0QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1Nzc4ZTdk
NTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJl
NzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5
LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2lu
Y2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA3NjI1MjAxOTc4YTJlNmE4OWEzZWE0MTI4ZjY0MDc2Mzc5NTZlODIy
Li45YWQyZjNiZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYyM2ZkZmQ3ZmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
c2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQpCkBAIC01ODcsNiArNTg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1
dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1l
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3N1YikKQEAgLTkwMiw3ICs5MDQsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5r
KCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0byBiYWRU
eXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAg
ICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAgICAgICAg
ICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21w
aWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQ
YXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYxZWIzMTZm
ZTMzMzlhOTdkNTBlYzU0YjE5NTZjNzk3Li5iNDViZTNhZDUwMjc5MTUwYjc5MjQzYTA0ZmZiZWMx
MWY5MzFmOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcxLDYgKzcxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKICAgICBzdHJ1Y3QgT3BQdXRC
eVZhbERpcmVjdDsKKyAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQ
dXRUb1Njb3BlOwogCiAgICAgc3RydWN0IENhbGxSZWNvcmQgewpAQCAtMTYxLDYgKzE2MiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQnlWYWxD
b21waWxhdGlvbkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRI
b3RQYXRoVGFyZ2V0KQorICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQorICAgICAg
ICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAsIG5vdElu
ZGV4SnVtcChub3RJbmRleEp1bXApCisgICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdl
dCkKKyAgICAgICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwogICAg
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcDsKQEAgLTIzNCw2ICsyNDQsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNo
ZWRJZDxPcD4oYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2Rl
QmxvY2spOworICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1OSw2ICsyNzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBS
ZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAorICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisKICAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBKSVRBcnJheU1vZGUpOwogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CkBAIC00MDYs
MTEgKzQyNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHRo
ZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kKE9wKTsKIAogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBl
ciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50
aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dD
YXNlcyk7CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsK
IApAQCAtNjA1LDYgKzYyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Niw2ICs3
MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19p
bmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFlNjFkOTE4NWZlYzc1YmVlZWVhMWRjNDNi
YjZhNDcxZjJiZDdjZTcuLjM4ZTE4ZGJmMWVhMDViOTQ3N2UxOGQ4NmE5Y2RmNmNlMjNkMjRhNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0
QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2lu
ZCBwdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChw
dXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRj
aCk7CiB9CkBAIC0xNTEsMTIgKzE1MCwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1Nz
aUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAo
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUp
IHsKLSAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgIGlmIChtX3B1dEtp
bmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0KSB7CiAgICAgICAgIEFTU0VSVChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgfQorCisgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsK
KyAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQog
CiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDI5YzJkMmU2ZDMy
OGRhOWNiMzc2MTE1ZDk5MmVhMmEyYzUwYzU5OTQuLjg1MzgzNWEzOTM1ODUyOTEyN2RlMmYzOTdi
NDk3OTk4MjRlMzZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMSwxMiArMTMwLDExIEBAIGNsYXNzIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6
c3RyaWN0KCkpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAog
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
YmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9k
ZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7
CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAg
CkBAIC0xNDUsNyArMTQzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2Vj
bWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCAyZjc2ZGIwMDY5MjExOGFmODUyZTcwNjI5NTAyNzQy
OTk4NWFjZmIyLi40NWY3ZjBjOTE4Y2ViM2JkYzc0N2U0M2VkY2UzMjZmYTEwMmU2NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAg
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlk
IG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1v
ZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUg
RUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1l
KQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFN
b2RlOjpzdHJpY3QoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1
dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCk7CiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnBy
aXZhdGVGaWVsZFB1dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkK
IHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAg
cmV0dXJuIG9wLm1fcHV0S2luZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFi
NzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li5mMDZkNTc0ZTkyOTU5NGI0NWIwZjg3M2E2MGE5Yzg4
NjA2MGQ4MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTc3MCwxMSArNzcwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplCiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
KSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywg
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKTsKICAgICB9
KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTc4Niw3ICs3ODYsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFsdWUpOwogfQogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBB
U1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAogICAgICAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERp
cmVjdFByaXZhdGVGaWVsZFB1dCk7CisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBw
dXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFNldCk7CiAgICAgfSk7CiB9CiAK
QEAgLTExMDUsNyArMTEwNSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgcHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywg
ZWNtYU1vZGUpOwogfQogCi0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTExOSw2ICsx
MTE4LDEzMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBPcHRpbWl6YXRp
b25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRp
bWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGlm
IChzdWJzY3JpcHQuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+
Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5kZXgoMCkpOworICAgICAgICAgICAgQVNTRVJU
KCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNl
ZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBw
cm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGlt
aXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBT
ZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3Vs
dDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6
OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAx
MCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8vIG5l
dmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29y
dGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUg
cHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNvdW50
IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAgICAg
aWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0aW1p
emF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisgICAg
aWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewor
ICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVmaW5l
KCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJp
dmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgCisg
ICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxl
eGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmlj
dCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgpKQor
ICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3QtPnB1
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9w
ZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRz
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8g
YW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJv
b2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChi
YXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBi
eVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQg
d2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUg
YWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVl
OworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
YWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDY1ZTcx
MjU5NTY4MzBhODgzZTgzMzMwNzk1MzllMjA0NDJjMDVkOTQuLjFjYzg5YzM3MmI2ZDFkMjAyOWEw
MzI0NjI3MTJiZjdiNjEzZTlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUg
IkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0xOTEsMTMgKzE5
MiwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZp
ZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qp
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVkMTcxOWE0NzM4OTI4YTBmMmM2MWJlM2Uy
ZGRkNDc0M2EuLmIxYWJmMjc3MTAyZDQ2MmU1YzU4YjFhNTI3MWE2ZGZmNmU0OTQzNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByaXZh
dGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTMx
Niw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGlu
IEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zNDYsNyArMzQ3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2
YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9k
ZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAg
ICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0NyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJ
bmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisK
KyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
KyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9u
SW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUp
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAg
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOwor
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBy
ZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKwor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQ
YXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3
ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3Qg
PyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMTM1OCw3ICsx
NDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsK
IApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0UHJp
dmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSBieXRlY29kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBz
bG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVm
aW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7
CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChieXRlY29kZSwgcHV0S2luZCwg
cHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Cit9CisKIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgfHwgbW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYsNiArMTUxNCw0MCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8
T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29k
ZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNl
cywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxv
Y2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRo
VGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25l
VGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIHBh
dGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFu
ZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgeworICAg
ICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhj
YWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxpemUo
cGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZm
ZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVf
bmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBw
b2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFsSW5m
by0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9u
ID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJu
QWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlvbikp
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUzMTNiMmFmMzA4MWViMGY1YzFl
YTRjMzA1NzQ4Li5mMTVjMGQwMTYwMzBkZjU0ZjNjNWRiYjQ4ZTQwMDc5OWJjOWI5NjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIH0KIAog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFk
ZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZh
c3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1w
KTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29k
ZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbElu
Zm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5k
OworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxh
YmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpT
VmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFn
R1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHBy
b3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0
S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0
cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21w
aWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxs
OworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA2YWEyNjA2
YWE5ZGI1Y2JiOWQ2NzI4MzI5YTkxZWNhYTRmZjQ0MzE4Li45MjkwY2JjOGY1YWFjZmZmMmFkZDQ4
NWRhODc1MTAyYWU3OWRjYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTUzNSwzNCArNTM1LDQ4IEBAIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAKIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3QpCiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2Ug
Tm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQot
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJp
Y3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKLSAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwotICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKHNs
b3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFBy
aXZhdGVGaWVsZFN0cmljdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHN0YXRp
YyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9w
ZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKIHsKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkgewotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChwdXRLaW5k
KSB7CisgICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNl
IERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RP
cHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNT
RVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0
ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKQEAgLTYw
OSw2ICs2MjMsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzUHJveHkgJiYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkRGVmaW5lKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlm
IChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CkBA
IC02NzAsNyArNjg3LDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlv
blNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYm
IHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0
LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0
dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY4
OCw3ICs3MDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0g
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25T
ZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xv
YmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1MjEsOCArMTUzNyw4IEBAIHZv
aWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rp
b24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgZWxzZSBpZiAo
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKQotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBlbHNlIGlmICh1bm9w
dGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3Qg
fHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemUpCisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0
QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdCB8
fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25Q
dXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IGY2MTBjMTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQxM2YuLmM4YzI2
MTUyNDNhZDhjMGE2ZGVkZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw5
ICs1OSw5IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNp
bmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgi
CiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkNGQw
OTE2ZmYyZDc2MTQ0MDQzYTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZlMDZlNmJhYzk3
MGY1MzRiM2RiMTI4MjM5YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNj
ZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgp
KSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlz
U3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1
YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwotICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3Vi
bGUoKTsKLSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3Vi
bGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsK
LSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vi
c2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBM
TElOVF9FTkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBv
YmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VM
WSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBB
U1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsK
ICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkp
CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAg
aWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2Rl
Lm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAg
ICBMTElOVF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6
OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNl
KTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBi
ZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBt
ZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0
TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAg
IGlmIChieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+
ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsK
KyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisK
KyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUu
aXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1
YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBp
ZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAg
ICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkg
eworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRj
aHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkg
cHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgp
LT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVE
ZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBi
eSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHku
Y2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUu
YXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxp
bmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3
UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0
cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3By
b3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNz
ZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxl
IGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9y
ZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAg
ICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkg
YSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxl
IGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2Vz
IG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9m
IHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAg
IC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBu
ZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwor
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2Nr
LCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNk
ZGUyNWI5ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgz
M2YzYTljMWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFj
ZWRkNGUwMzgxNDAxNjI5Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNl
Zjc5OTYxYTJhMDkwMDFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBA
IG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93
UGF0aCkKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdp
dGhSZWxvYWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQor
ICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRl
QmFycmllck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVC
YXJyaWVyRG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0
LCBjZWxsRmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJp
ZXJEb25lKQpAQCAtMTY5Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRl
X25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jh
c2UsIG1fdmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cp
CisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1l
dGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9v
bGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFt
ZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0
UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0
MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAj
IHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlv
bgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVC
YXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAg
ICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEp
CisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkK
KyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcs
IHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0
aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhv
bGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xv
dzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQor
ICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNv
ZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3
ZWJiZmFhMzU0My4uZmFmZjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwog
ICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0
ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQo
bV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMs
IHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxv
YWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIK
KyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5h
bWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0
eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAg
ICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAg
IyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAg
IGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwg
dDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVs
b2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0
YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFz
ZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246
CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMg
dGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQw
LCB0MikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3Zh
bHVlKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2go
KQorZW5kKQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3Ny
RXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVs
ZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQu
cHJpbnQoIlNldCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEw
MWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOwor
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21C
eXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0
ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0K
KyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1
cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2
YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92
YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM5MjU0MmY5MmU1ZjdhYjAyYWJjN2E3ZDNjMTg5NDY2YjdkNGRlMGEuLmUxOWVjYWYz
YjcxYTY0MGQ2Zjk2ZWE3YTg4ZWU1MjAxNjI2Mjk0ZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDkt
MDMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VT
TmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUv
ZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVj
dXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXBy
aXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3Qu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxl
ZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9u
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1m
b2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1j
b21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50
LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA5LTAyICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5z
ZXJ0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFy
cmllci1pbnNlcnRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY1ZTYzMDU1NzhkZWY2OGI0ZTI2ZmZmOGU3
MWNmOWUwYjk0OGZjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQt
cHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzCkBAIC0wLDAgKzEsNjkgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Z0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24o
YSwgZSkgeworICAgICAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJv
d3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNl
cHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAg
ICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9m
IGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSAr
ICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9
IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgp
IHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAgICAgICBsZXQg
a2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAgICAgaWYgKGtl
eSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAgICAgIGlmIChr
ZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAgICAgICAgICAg
dGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7Cisg
ICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IG9sZE9i
amVjdCA9IG5ldyBDOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgaWYgKGkgPCA1MDAw
KSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGMuc2V0RmllbGQoaSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKGkgPT0gNTAwMCkKKyAgICAgICAgICAgIGdjKCk7CisgICAg
ICAgIG9sZE9iamVjdC5zZXRGaWVsZCh7cHJvcDogaX0pOworICAgICAgICBlZGVuR0MoKTsKKyAg
ICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShvbGRPYmplY3QuZ2V0RmllbGQoKS5wcm9wLCBpKTsKKyAg
ICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1l
LWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0
LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQt
YnktaWQtZGlyZWN0LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1h
bGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVl
IiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAg
ICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRo
cm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAg
ICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0
KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJd
OworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBp
OworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7
CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9
IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KK30KK25vSW5s
aW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
ICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAgICAgYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYy5zZXRGaWVsZC5jYWxs
KHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0RmllbGQoaSk7Cit9
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBp
bGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0
LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1h
cy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSAr
ICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNl
cHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxk
ID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIs
ICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0
aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhp
c1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAg
dGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
IH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYy5z
ZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0
RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRy
YXNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ2ZTQ1MzY0YjAyYjQzNTU0ZWQzNjJkNGFhOGRlMTBi
YzQ3ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzCkBAIC0wLDAgKzEs
NTAgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwg
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxz
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1
bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1l
ICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4
Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgewor
ICAgIHJldHVybiB7fTsKKyAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI2Zp
ZWxkID0gMDsKKworICAgIGdldEZpZWxkKGNoYW5nZVJlY2lldmVyKSB7CisgICAgICAgIGxldCBy
ID0gdGhpczsKKyAgICAgICAgaWYgKGNoYW5nZVJlY2lldmVyKSB7CisgICAgICAgICAgICByID0g
e307CisgICAgICAgIH0KKworICAgICAgICByLiNmaWVsZCA9ICdiYXInOworICAgIH0KK30KK25v
SW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgaWYgKGkgPCA5MDAwKQorICAgICAgICBD
LnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMsIGZhbHNlKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIEMucHJv
dG90eXBlLmdldEZpZWxkLmNhbGwoYywgdHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xk
aW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjAyZmFhODkxYWU0MTQwMWVlYWNmZGFlZDgzNWY0ZTQyZGY0ZTVlNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10
by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSw1NyBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiLCAiLS11c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDA7Cits
ZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitsZXQgY29uc3RydWN0RGlmZmVyZW50ID0g
ZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQo
KSB7CisgICAgICAgIGlmIChjb25zdHJ1Y3REaWZmZXJlbnQpCisgICAgICAgICAgICB0aGlzLmZv
byA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1ldGhvZChqLCBvdGhlcikg
eworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGxldCBvYmogPSB0aGlzOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKysp
CisgICAgICAgICAgICBjKys7CisgICAgICAgIGlmIChqICUgMikgeworICAgICAgICAgICAgb3Ro
ZXIuZm9vID0gajsKKyAgICAgICAgICAgIG9iaiA9IG90aGVyOworICAgICAgICB9CisgICAgICAg
IG9iai4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUubWV0aG9kKTsK
K25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IG90aGVyQyA9IG5ldyBD
KCk7CisKK2NvbnN0cnVjdERpZmZlcmVudCA9IHRydWU7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MzA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZChpLCBvdGhlckMp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNv
bXBpbGF0aW9uID0gdHJ1ZQorbGV0IGMgPSBuZXcgQygpOworYy5tZXRob2QoMCwgb3RoZXJDKTsK
K2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1
dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50
LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzIwZWM4MDRhOTRmNzFl
MzU4ZWE3YWFlNmE2ZmU4ZGVlMjU4NTUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMK
QEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRU
aWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJ
bmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBp
dGVyYXRpb25zID0gMTAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitjbGFz
cyBDIHsKKyAgICAjZmllbGQgPSAwOworCisgICAgbWV0aG9kKCkgeworICAgICAgICBsZXQgYyA9
IDA7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0
ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBj
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9
IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgYy5tZXRob2Qo
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJD
b21waWxhdGlvbiA9IHRydWUKK2MubWV0aG9kKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0Rmll
bGQoKSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2Vu
ZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2MjcwYmFiY2EzZDAwN2I3YTc4MzA5NzcyNzk0
ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1n
ZW5lcmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAg
aWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSAr
ICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlv
bihkeW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gdGhp
cy5pbml0KCk7CisgICAgCisgICAgICAgIGluaXQoKSB7CisgICAgICAgICAgICB0aGlzW2R5bmFt
aWNQcm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICBzZXRG
aWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKworICAg
ICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBu
b0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBD
OworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3BlcnR5
JyArIGkpOworICAgIGxldCBjID0gbmV3IENsYXNzKCk7CisgICAgYy5zZXRGaWVsZCgndGVzdCcp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOTU5OGU3MDE5ZDM3NGQ2MGFhOWQ3Y2RhOWNmNTQyYjcxNjdmM2I0Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmlu
ZS5qcwpAQCAtMCwwICsxLDY0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRp
b24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBm
YWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlv
bi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRo
b3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZE92ZXJyaWRlUmV0dXJuID0g
ZmFsc2U7CitsZXQgb2JqOworCitjbGFzcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgaWYgKHNob3VsZE92ZXJyaWRlUmV0dXJuKQorICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICNm
aWVsZCA9ICd0ZXN0JzsKKworICBnZXRGaWVsZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLiNmaWVs
ZDsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBp
ZiAoaSA+IDEwMDApIHsKKyAgICAgIHNob3VsZE92ZXJyaWRlUmV0dXJuID0gdHJ1ZTsKKyAgICAg
IG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1
ZShDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKG9iaiksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQu
c2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgbmV3IEMoKTsKKyAgICAg
IH0pOworICB9IGVsc2UgeworICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcg
QygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAg
ICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAgYy5nZXRG
aWVsZC5jYWxsKG9iaik7CisgICAgICB9KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDdjZWE2MDAw
NWE5YjVmODY4YTBiNTNiZjIxZDc1YzI0ZmJiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKQEAgLTAsMCArMSw1MCBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAg
ICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRo
cm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAg
ICB9Cit9CisKK2xldCBzaG91bGRTdG9yZSA9IGZhbHNlOworCitmdW5jdGlvbiBmb28oKSB7Cisg
IGNsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgICNmb287CisKKyAgICBp
bml0KCkgeworICAgICAgaWYgKHNob3VsZFN0b3JlKQorICAgICAgICB0aGlzLiNmb28gPSAxMjsK
KyAgICB9CisgIH0KKworICByZXR1cm4gbmV3IEMoKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICBz
aG91bGRTdG9yZSA9IHRydWU7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkg
PT4geworICAgICAgZm9vKCk7CisgICAgfSk7CisgIH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0K
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzMxNGZhOWU3MDQ5ZjFiODBiMDJmYzBhNzE5NTQ3ZTdhMjFkYjkwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRl
LWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAg
dGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3
RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFu
Y2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5u
YW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAn
dGVzdCc7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2Zp
ZWxkID0gdjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3Mo
KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMu
c2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
J2ZvbycgKyBpKTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5l
dyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAndGVzdCcpOworYzIuc2V0
RmllbGQoJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAnZm9vJyk7CisK
K2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICBjLnNldEZpZWxkLmNhbGwoYzIsICd0ZXN0Jyk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICBjMi5zZXRGaWVsZC5jYWxsKGMsICd0ZXN0Jyk7Cit9KTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY5NWExYWRl
Mzc2OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVjMmRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCits
ZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAg
aW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVy
dHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3Ig
KDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1w
b2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2NGNh
OWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJv
bC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChh
ICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNv
dW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxs
b3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVs
ZCA9ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxk
KCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1k
aWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNs
YXNzRGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAK
KyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
ICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4j
ZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisK
KyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0g
Y2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMx
IDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407972</attachid>
            <date>2020-09-04 08:05:49 -0700</date>
            <delta_ts>2020-09-04 08:33:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200904120545.patch</filename>
            <type>text/plain</type>
            <size>162559</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li4zNWFiZDQ2MmVjZDg5NWRj
ZjhlZDE3ZWU1MzE4NzQ0YjdhZjEzNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDktMDMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGlyZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRl
RmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJ
bmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENv
bXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxP
cFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZh
bERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJ
RCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDkt
MDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJU
SU9OIEZBSUxFRDogdmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBD
dXN0b21HZXR0ZXJTZXR0ZXJUeXBlIC4vYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0
ZDg5NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYw
OGU3MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3
LDcgKzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJ
bnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2
YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjg5
NTVmMjJkZTJmMjYyNzg2ZTdlNjgxM2EyNDA4Yjg4N2U4OWRmLi43MGNkNzM1OWZjZTg1NWY1MDEy
YmZkMThlODU5OTk0OWQ0NjI3MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI1NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0Qjgw
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0
NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5
NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAog
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lz
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRC
ODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2
OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTIsOCArNDE1Miw2IEBACiAJCTg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFy
clBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0g
eWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZF
NjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1
QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5
VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3Myw2ICs0MTcxLDggQEAKIAkJODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGll
cmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1N
YXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRC
OEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjIsNiArNzYyMiw4IEBA
CiAJCQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0Uy
MEJEMDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2Vu
dC5jcHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAv
KiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJB
IC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NDkzLDggKzg0OTUsNiBAQAogCQkJCTBG
OTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0
QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRB
ODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIz
NDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZC
MDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMjksNiArMTAyMjksNyBAQAogCQkJCUNF
MjBCRDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2
ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFF
MDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNjksNyArMTAyNzAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMx
RkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdE
RDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRB
QTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZWQzYThkMWI1MTQzN2I1ZGFkY2QyOTVmNzMyYzBkOWEzM2ZkMDQ2ZS4uNDU1Y2JiOTQwYzEyNTg3
YzQ4YzhiYWNjNDU3ZDFmZWEyZTdlZTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtMjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRl
Y29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0Myw2ICs5NDIsNyBAQCBydW50aW1lL09i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVy
YXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNy
ZWF0aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5j
cHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0
Mzc2YjIwYjYzMjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNl
OWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywK
ICAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQ
dXRLaW5kLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0
LDIwIEBAIG9wIDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJy
aWVyW0pTQ2VsbF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0
S2luZDogUHJpdmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAg
ICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRl
QmFycmllcltKU0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBh
cmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBA
QCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFN
b2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5
NzZiMjJjZWI4Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CkBAIC0yMjcsNiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9w
RW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdl
dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2Us
IHByb3BlcnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAg
ICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAg
ICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmll
bGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjcyZWU3YmYwNWVhMWFmOTg4Mzc0YjU2NzFmOGNkNjhjNjI2ZTFm
YS4uZGVlYmQ5OWYxZDYxODllYWYyZjczMTMxMjM0MjA0MzdiYWFiY2I2MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAg
ICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAg
ICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAg
ICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJr
ZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFv
bGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3By
b3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUg
PQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0K
KyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0
cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMw
Miw2ICsxMzIyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAg
ICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYg
KCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29m
ZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJm
NmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
U2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAi
U3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlW
YWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlT
aXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9v
bGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0
cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0Rp
cmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJp
Y3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdl
dFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBp
c0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAg
ICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5p
c1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAg
cmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRp
YyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBh
dXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0g
ICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0
Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nl
c3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3Qg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBp
c0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmll
bGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0
IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNp
emU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0
czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+
IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBi
b29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVu
YW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2
YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUy
YTU3N2M0ZDJlYzUxZjhhLi44NDI4M2QyNGExZWZkY2I4YTRkNDVkNzEzYTA4ZjBkMjgxYTI0Zjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGIKICAgICByZXR1
cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
dWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMzE2LDcgKzMxNiwxNCBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RydQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAg
ICAgICAvLyBXZSBjYW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0
IG1vZGUgYW5kIGl0CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0
cmFuc2l0aW9uLiBXZSBuZWVkIHRvIHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y3BldGlvbiBpZiBpdCBldmVyIGdldHMgZXhlY3V0ZWQsIHNpbmNlCisgICAgICAgIC8vIHdl
IHdpbGwgYmUgdHJ5aW5nIHRvIHNldCBhIG5vdCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4KKyAg
ICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBoeXBvdGhl
c2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJvdmUgdGhh
dCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNvbWUgc2Fu
aXR5IGNoZWNrcy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZlY2Q3MzkxN2Zk
YTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
ICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFy
eS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFn
cykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJl
Y3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdz
LmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVG
aWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIz
ODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19
OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBB
IGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91
dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0
ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1v
ZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQ
dXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQot
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAg
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJv
b2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNE
aXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1f
ZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsK
LSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVz
cGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJi
M2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRm
NmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERp
cmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVG
aWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiMWE1NDhhMWZmYjAzM2Y5MTEzMTczMWFkYzBiNWE4
ZWJlOGVhMWE2Li5lM2YzZTg1ZDJlMzU3MTUwZTVkNjg0YjE3MjAzMGVjNzU5YTdhZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI1LDcgKzI3MjYsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkp
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ5LDEzICsyNzUw
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVm
aW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYx
NjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlmNTYzZGNhNTAx
YWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyArNDAyOSwyNSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisK
KyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAg
ICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5v
ZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0byBwcml2YXRl
RmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQgPyBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOworICAgICAgICAg
ICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgYm9v
bCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyMTIyYWE0OTVkYTc0M2NkZDVlZmMyZDRhY2FiNzYwNDNiZjMzY2I5Li44Yzg0MmIzNTI3MmYx
MGNjZGM4M2FlZWU4ZGZmOTQxNWU3ZWQ5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1
ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5
dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
IEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25zdCBQdXRCeUlk
U3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewor
ICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZU
TCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5
SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9n
cmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgIAorICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24p
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNl
dERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgYWRkVG9H
cmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gcHV0QnlJ
ZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CisgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxk
UHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAg
ICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFsdWUpOworICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3Ry
dWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdl
OworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0
ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAgICAgICAgIC8v
IHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgIEFTU0VS
VCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAgICAgICAgICAg
aWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNp
dGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICAgICAgICAg
IGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5v
ZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAgICAgLy8gTk9U
RTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291bGQgaW5zZXJ0
IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUgYmVjYXVzZToK
KyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdpbGwgZ2V0IHNj
YW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8vICAgdGhlIG9i
amVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcgdG8gcHV0IGlz
IGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28KKyAgICAgICAg
Ly8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQgd2lsbCBzZWUg
dGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAg
ICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2YWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgYmFzZSwgcHJv
cGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVjdHVyZSBnb2Vz
IGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRvR3JhcGgoUHV0
U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzksNTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIHRyeUNvbXBp
bGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2lu
KCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwg
YnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUs
IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8g
CisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAg
ICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAg
ICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50
aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRp
Zmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0Nv
bnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJl
bnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQpCisgICAgICAgICAgICAg
ICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9w
SW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQ
cm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKQEAgLTc1MDAsNyArNzY1OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1czsK
ICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1aWQsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKQEAgLTgyNzcsNyAr
ODQzNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4OCw3ICs4NDQ3LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUp
OwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZl
IHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAg
IG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJl
IHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2Ug
bWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFj
ZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1
cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBj
YXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0
cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3
NTVjNDEzOWNhLi4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAg
IGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgw
M2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjcyMjM4NTg3ODhhNjY3OTEwOGQ1YTE2YzZjYjEyMTM4
MWNmODE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9v
bCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQo
bm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGly
ZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCksIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVk
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdp
biA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUt
PmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUo
KTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBs
ZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIEFTU0VS
VChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAgICAgICAgICAgICAg
VHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9u
IDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1Zh
bGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29k
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9k
ZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0
cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhp
cyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgICAgIG1faW50
ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOwot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5n
ZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBh
bHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50
IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAgICAgICAgICAgIE11
bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRh
LmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlhbnRz
KCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChk
YXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRC
eUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGlu
ZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgUHJp
dmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzAsNiArMTM4NSw5MyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0
QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdl
LCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxlZCkKKyAg
ICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBO
b2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAgICAgICBB
U1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFic3RyYWN0
VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAgICAgQWJz
dHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7CisKKyAg
ICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJl
U2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCisg
ICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKKyAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NF
UlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAg
ICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29u
ZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRp
b24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBD
aGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25v
d25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9y
VHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAg
ICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
UHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2lu
dGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsK
KyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1f
Z3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24n
dCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMu
CisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0
QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAg
RWRnZShiYXNlTm9kZSkpOworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3Bs
YW4uaXNGVEwoKSk7CisKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRz
ID0gc3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0
KGRhdGEpOworICAgIH0KKwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAg
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIw
OGM3OS4uN2RmM2QzNWQ0MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBS
ZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggYjZjMGJiOGJhOTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uNWViYTdkMWYy
YzY4ZDA0YzkxZWU2MDE0OTFhMTc4ZmNhODAxOWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTA1LDEyICsxOTA1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYTVjZGYxYWE2ZjNkMmQ5YjFl
ODZlZDViZDIzMThiNjJkNmFjOGVlOS4uZTZiMGU4ZWQ0YzM4OGI4NmRlZTg0MzUzOTAyNjhjOGVk
YWNhMmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC02MTUsNyArNjE2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29udmVydFRvUHV0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0g
UHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gg
fHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWVCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQz
KGNoaWxkcmVuLmNoaWxkMigpKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpA
QCAtNjI1LDcgKzYyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRp
UHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09
IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9
PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJp
dmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBtX29wID0g
TXVsdGlQdXRCeU9mZnNldDsKICAgICB9CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2OSwxMyArMjI3MSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkp
OwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAg
ICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90Pigp
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yMjgzLDYgKzIyODUsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBp
ZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBpZiAob3Ao
KSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkKKyAgICAg
ICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisKICAgICBi
b29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNm
MTM1ZDViMzlkY2I1MmNkOTAyMjBlLi43N2E3ZWJmMWI5MTEzMzkwMDNlYmQ3MmExNmFkZWU4NGQ0
MjkwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDgs
NiArMjA4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBt
YWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQdXRQcml2YXRlTmFtZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlH
ZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1
OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUg
IkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgsNiArNDks
NyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBt
X3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50
aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFN
b2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZv
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkg
eyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCog
cHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA5ZDNmODllNjZlYWU2OGM2Y2QxNTQzYzc3
YzU3ZjU5MGQ5Nzg3NDc4Li5mZjM2Mjg0MDIxOWFiNDJjYTcwNzU3Y2Q5ZTVkY2FkOWQ2ZTJkYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3OCw2ICsxMzc4LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRo
VGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZToKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCBiMDdjYmE3MGZlMTljNDEwZjJlZDVhNDA3NmQ4NDZhMjdkMWYxY2Y1Li45MTdk
ZTAyZmU2YmUyOGJjM2M4NzY5MmRiMGE1N2ZjOWU4NDI3NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI2LDYgKzUyNiw4IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVm
aW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBj
YXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCBlMzBkNjZlMDgxOWZjMTQxM2U2ZmNkNGE2MmJjMWRlNWVkMTU1YWMw
Li40MjBlYTk0NmZjMzUyMDMzYTkzN2QyZmVlOWUzNDhlMzhkMmYxMDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzUyNCw2ICsz
NTI0LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5v
ZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworCisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKworICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eVZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOwor
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2Rl
KQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKworICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCisg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERp
cmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisKKyAgICBub1Jlc3VsdChu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFn
cyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTQzOTYsNyArMTQ0MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpT
VmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAg
ICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODky
YzBlNjFkMjBmZTNlNTIuLmYwOGRmZTc2MjcyYWI0NDg1MmJlNDBkMWZkY2NlZDcyZDM4ODIwZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEzNjAsNiArMTM2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNl
bGxXaXRoU3RyaW5nKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hp
bGQzKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBF
ZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBp
bGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlP
ZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgxMjVhZjRlMGExYzM2OGY4ZjRkNWEuLjYwOTUz
MWI4ZjU2NGI5ZDlhYzg2ZmE4ZmFlOGUzMzBmZGQwMDJlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5MCw2
ICsyNTkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLmM2YzI3YzRi
MzgyNTUwOTVmY2Q1NDQ5OWQ4NWJkYWIxZWZmZWEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjk0OCw2ICsyOTQ4LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxl
UHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggMDcxNTNiOGU0NzEyZjY4MjliNmViYzYzMjE3NDY2ZjgzZDQ2YzFj
NC4uNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQzOWE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgLy8gV2UgZW1pdCBJQyBj
b2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlkZW50aWZpZXIgYW5kIHdlIG5l
ZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAgICAvLyBiYXJyaWVyIGZvciBpdC4gT24g
UHV0UHJpdmF0ZU5hbWUsIHdlIHBlcmZvcm0gc3RvcmUgYmFycmllciBkdXJpbmcgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4MGIxNjg0NGFhYmFjZDg1NjY5NmQ4NDVmODFjM2M2
Zjk3NzM5N2EuLmI2YTgyYzcxZDQ0ZTk0N2NlMjlkMmUyNzliMGMwMzY4ZmRmYWMzNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5NCw2
ICszOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2Ug
RmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlZmRjYmI0
ZWI0NmQ3Yzc0N2YzZjY3OWZlYWZiNmZlNzE0MjM4ZTZjLi43YWU0MWUyYzYwNDlhNGNkNzI4ZTAx
NWQ0NDc5MWM3ZjcxZWZiM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xMDE3LDYgKzEwMTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRo
aXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICBjb21waWxlUHV0
UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9t
aWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0Nv
bXBhcmVFeGNoYW5nZToKQEAgLTM5NDUsNiArMzk1MSwzMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
KQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsK
KworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdl
IGRvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICAgICAgYXV0byBw
dXRLaW5kID0gbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICAgICAgY2Fj
aGVkUHV0QnlJZChtX25vZGUsIGJhc2UsIHZhbHVlLCBFQ01BTW9kZTo6c3RyaWN0KCksIHB1dEtp
bmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKKyAgICB7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxk
UHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMg
OiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRy
KDApLCBtX291dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDE5MSwxNCArNDIyMywxMCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHZv
aWQgY2FjaGVkUHV0QnlJZChOb2RlKiBub2RlLCBMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBF
Q01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQogICAgIHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKLQotICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpOworICAgICAgICBBU1NFUlQoaWRlbnRpZmllcik7CiAKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwpAQCAtNDIxNCw3ICs0MjQyLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQyMzMs
NyArNDI2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERp
cmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAg
ICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5l
cmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBk
b25lID0gaml0LmxhYmVsKCk7CkBAIC00MjYxLDYgKzQyODgsMTcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSk7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGF1dG8gcHV0S2luZCA9IG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdDsKKyAgICAgICAg
Y2FjaGVkUHV0QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1Nzc4ZTdk
NTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJl
NzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5
LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2lu
Y2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA3NjI1MjAxOTc4YTJlNmE4OWEzZWE0MTI4ZjY0MDc2Mzc5NTZlODIy
Li45YWQyZjNiZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYyM2ZkZmQ3ZmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
c2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQpCkBAIC01ODcsNiArNTg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1
dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1l
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3N1YikKQEAgLTkwMiw3ICs5MDQsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5r
KCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0byBiYWRU
eXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAg
ICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAgICAgICAg
ICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21w
aWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQ
YXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYxZWIzMTZm
ZTMzMzlhOTdkNTBlYzU0YjE5NTZjNzk3Li5iNDViZTNhZDUwMjc5MTUwYjc5MjQzYTA0ZmZiZWMx
MWY5MzFmOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcxLDYgKzcxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKICAgICBzdHJ1Y3QgT3BQdXRC
eVZhbERpcmVjdDsKKyAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQ
dXRUb1Njb3BlOwogCiAgICAgc3RydWN0IENhbGxSZWNvcmQgewpAQCAtMTYxLDYgKzE2MiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQnlWYWxD
b21waWxhdGlvbkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRI
b3RQYXRoVGFyZ2V0KQorICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQorICAgICAg
ICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAsIG5vdElu
ZGV4SnVtcChub3RJbmRleEp1bXApCisgICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdl
dCkKKyAgICAgICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwogICAg
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcDsKQEAgLTIzNCw2ICsyNDQsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNo
ZWRJZDxPcD4oYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2Rl
QmxvY2spOworICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1OSw2ICsyNzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBS
ZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAorICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisKICAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBKSVRBcnJheU1vZGUpOwogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CkBAIC00MDYs
MTEgKzQyNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHRo
ZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kKE9wKTsKIAogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBl
ciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50
aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dD
YXNlcyk7CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsK
IApAQCAtNjA1LDYgKzYyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Niw2ICs3
MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19p
bmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFlNjFkOTE4NWZlYzc1YmVlZWVhMWRjNDNi
YjZhNDcxZjJiZDdjZTcuLjM4ZTE4ZGJmMWVhMDViOTQ3N2UxOGQ4NmE5Y2RmNmNlMjNkMjRhNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0
QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2lu
ZCBwdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChw
dXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRj
aCk7CiB9CkBAIC0xNTEsMTIgKzE1MCwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1Nz
aUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAo
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUp
IHsKLSAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgIGlmIChtX3B1dEtp
bmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0KSB7CiAgICAgICAgIEFTU0VSVChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgfQorCisgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsK
KyAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQog
CiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDI5YzJkMmU2ZDMy
OGRhOWNiMzc2MTE1ZDk5MmVhMmEyYzUwYzU5OTQuLjg1MzgzNWEzOTM1ODUyOTEyN2RlMmYzOTdi
NDk3OTk4MjRlMzZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMSwxMiArMTMwLDExIEBAIGNsYXNzIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6
c3RyaWN0KCkpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAog
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
YmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9k
ZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7
CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAg
CkBAIC0xNDUsNyArMTQzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2Vj
bWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCAyZjc2ZGIwMDY5MjExOGFmODUyZTcwNjI5NTAyNzQy
OTk4NWFjZmIyLi40NWY3ZjBjOTE4Y2ViM2JkYzc0N2U0M2VkY2UzMjZmYTEwMmU2NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAg
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlk
IG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1v
ZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUg
RUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1l
KQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFN
b2RlOjpzdHJpY3QoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1
dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCk7CiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnBy
aXZhdGVGaWVsZFB1dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkK
IHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAg
cmV0dXJuIG9wLm1fcHV0S2luZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFi
NzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li5mMDZkNTc0ZTkyOTU5NGI0NWIwZjg3M2E2MGE5Yzg4
NjA2MGQ4MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTc3MCwxMSArNzcwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplCiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
KSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywg
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKTsKICAgICB9
KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTc4Niw3ICs3ODYsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFsdWUpOwogfQogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBB
U1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAogICAgICAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERp
cmVjdFByaXZhdGVGaWVsZFB1dCk7CisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBw
dXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFNldCk7CiAgICAgfSk7CiB9CiAK
QEAgLTExMDUsNyArMTEwNSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgcHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywg
ZWNtYU1vZGUpOwogfQogCi0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTExOSw2ICsx
MTE4LDEzMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBPcHRpbWl6YXRp
b25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRp
bWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGlm
IChzdWJzY3JpcHQuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+
Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5kZXgoMCkpOworICAgICAgICAgICAgQVNTRVJU
KCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNl
ZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBw
cm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGlt
aXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBT
ZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3Vs
dDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6
OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAx
MCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8vIG5l
dmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29y
dGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUg
cHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNvdW50
IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAgICAg
aWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0aW1p
emF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisgICAg
aWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewor
ICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVmaW5l
KCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJp
dmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgCisg
ICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxl
eGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmlj
dCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgpKQor
ICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3QtPnB1
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9w
ZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRz
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8g
YW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJv
b2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChi
YXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBi
eVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQg
d2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUg
YWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVl
OworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
YWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDY1ZTcx
MjU5NTY4MzBhODgzZTgzMzMwNzk1MzllMjA0NDJjMDVkOTQuLjFjYzg5YzM3MmI2ZDFkMjAyOWEw
MzI0NjI3MTJiZjdiNjEzZTlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUg
IkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0xOTEsMTMgKzE5
MiwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZp
ZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qp
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVkMTcxOWE0NzM4OTI4YTBmMmM2MWJlM2Uy
ZGRkNDc0M2EuLmIxYWJmMjc3MTAyZDQ2MmU1YzU4YjFhNTI3MWE2ZGZmNmU0OTQzNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByaXZh
dGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTMx
Niw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGlu
IEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zNDYsNyArMzQ3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2
YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9k
ZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAg
ICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0NyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJ
bmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisK
KyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
KyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9u
SW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUp
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAg
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOwor
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBy
ZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKwor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQ
YXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3
ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3Qg
PyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMTM1OCw3ICsx
NDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsK
IApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0UHJp
dmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSBieXRlY29kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBz
bG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVm
aW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7
CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChieXRlY29kZSwgcHV0S2luZCwg
cHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Cit9CisKIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgfHwgbW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYsNiArMTUxNCw0MCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8
T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29k
ZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNl
cywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxv
Y2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRo
VGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25l
VGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIHBh
dGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFu
ZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgeworICAg
ICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhj
YWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxpemUo
cGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZm
ZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVf
bmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBw
b2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFsSW5m
by0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9u
ID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJu
QWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlvbikp
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUzMTNiMmFmMzA4MWViMGY1YzFl
YTRjMzA1NzQ4Li5mMTVjMGQwMTYwMzBkZjU0ZjNjNWRiYjQ4ZTQwMDc5OWJjOWI5NjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIH0KIAog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFk
ZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZh
c3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1w
KTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29k
ZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbElu
Zm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5k
OworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxh
YmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpT
VmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFn
R1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHBy
b3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0
S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0
cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21w
aWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxs
OworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA2YWEyNjA2
YWE5ZGI1Y2JiOWQ2NzI4MzI5YTkxZWNhYTRmZjQ0MzE4Li45MjkwY2JjOGY1YWFjZmZmMmFkZDQ4
NWRhODc1MTAyYWU3OWRjYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTUzNSwzNCArNTM1LDQ4IEBAIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAKIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3QpCiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2Ug
Tm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQot
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJp
Y3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKLSAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwotICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKHNs
b3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFBy
aXZhdGVGaWVsZFN0cmljdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHN0YXRp
YyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9w
ZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKIHsKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkgewotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChwdXRLaW5k
KSB7CisgICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNl
IERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RP
cHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNT
RVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0
ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKQEAgLTYw
OSw2ICs2MjMsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzUHJveHkgJiYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkRGVmaW5lKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlm
IChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CkBA
IC02NzAsNyArNjg3LDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlv
blNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYm
IHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0
LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0
dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY4
OCw3ICs3MDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0g
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25T
ZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xv
YmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1MjEsOCArMTUzNyw4IEBAIHZv
aWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rp
b24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgZWxzZSBpZiAo
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKQotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBlbHNlIGlmICh1bm9w
dGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3Qg
fHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemUpCisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0
QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdCB8
fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25Q
dXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IGY2MTBjMTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQxM2YuLmM4YzI2
MTUyNDNhZDhjMGE2ZGVkZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw5
ICs1OSw5IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNp
bmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgi
CiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkNGQw
OTE2ZmYyZDc2MTQ0MDQzYTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZlMDZlNmJhYzk3
MGY1MzRiM2RiMTI4MjM5YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNj
ZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgp
KSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlz
U3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1
YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwotICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3Vi
bGUoKTsKLSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3Vi
bGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsK
LSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vi
c2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBM
TElOVF9FTkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBv
YmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VM
WSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBB
U1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsK
ICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkp
CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAg
aWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2Rl
Lm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAg
ICBMTElOVF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6
OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNl
KTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBi
ZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBt
ZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0
TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAg
IGlmIChieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+
ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsK
KyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisK
KyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUu
aXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1
YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBp
ZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAg
ICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkg
eworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRj
aHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkg
cHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgp
LT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVE
ZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBi
eSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHku
Y2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUu
YXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxp
bmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3
UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0
cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3By
b3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNz
ZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxl
IGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9y
ZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAg
ICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkg
YSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxl
IGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2Vz
IG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9m
IHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAg
IC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBu
ZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwor
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2Nr
LCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNk
ZGUyNWI5ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgz
M2YzYTljMWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFj
ZWRkNGUwMzgxNDAxNjI5Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNl
Zjc5OTYxYTJhMDkwMDFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBA
IG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93
UGF0aCkKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdp
dGhSZWxvYWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQor
ICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRl
QmFycmllck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVC
YXJyaWVyRG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0
LCBjZWxsRmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJp
ZXJEb25lKQpAQCAtMTY5Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRl
X25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jh
c2UsIG1fdmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cp
CisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1l
dGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9v
bGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFt
ZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0
UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0
MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAj
IHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlv
bgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVC
YXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAg
ICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEp
CisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkK
KyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcs
IHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0
aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhv
bGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xv
dzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQor
ICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNv
ZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3
ZWJiZmFhMzU0My4uZmFmZjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwog
ICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0
ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQo
bV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMs
IHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxv
YWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIK
KyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5h
bWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0
eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAg
ICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAg
IyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAg
IGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwg
dDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVs
b2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0
YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFz
ZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246
CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMg
dGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQw
LCB0MikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3Zh
bHVlKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2go
KQorZW5kKQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3Ny
RXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVs
ZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQu
cHJpbnQoIlNldCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEw
MWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOwor
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21C
eXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0
ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0K
KyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1
cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2
YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92
YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM5MjU0MmY5MmU1ZjdhYjAyYWJjN2E3ZDNjMTg5NDY2YjdkNGRlMGEuLmUxOWVjYWYz
YjcxYTY0MGQ2Zjk2ZWE3YTg4ZWU1MjAxNjI2Mjk0ZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDkt
MDMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VT
TmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUv
ZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVj
dXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXBy
aXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3Qu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxl
ZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9u
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1m
b2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1j
b21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50
LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA5LTAyICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxk
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmll
bGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM2YzhjNDliZGVkMmUyYmNiMzc2NzdmNDY1NDE1NTFiODZkNTU2
MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGlj
LXB1dC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworCits
ZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0IGMzID0gbmV3IEMoKTsKK2MzLmJh
eiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisKK2ZvciAobGV0IGkgPSAwOyBpIDwg
NTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVsZChpKTsKK30K
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1
YmxpYy1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1w
dWJsaWMtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VhN2ZkMDJmZmFjNzk1YWQ3ZWIxYTZjYzQ3OWEz
MGJkMjYyMGZiZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3Bv
bHltb3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanMKQEAgLTAsMCArMSwyNiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsKKyAgICBmaWVsZDsKKworICAgIHNldEZpZWxk
KHZhbHVlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lubGlu
ZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAw
OworCitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0IGMzID0gbmV3IEMoKTsK
K2MzLmJheiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVsZChp
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXByaXZhdGUt
ZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtcHJpdmF0ZS1maWVsZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMjYyOGQzODhiYjA1MGI2MmU2NTk4YmY3YzgzYWZhNDg4NjA4NTI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXByaXZhdGUtZmllbGQu
anMKQEAgLTAsMCArMSwxNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBD
IHsKKyAgICAjZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNm
aWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
KworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsK
KyAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9wdXQtcHVibGljLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXB1
YmxpYy1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmZjY2UyZWY2NDE2NDgzZTYyMjczYzhmNTA0NWVi
NDQxNjg1ZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0
LXB1YmxpYy1maWVsZC5qcwpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBDIHsKKyAgICBmaWVsZDsK
KworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2YWx1ZTsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMo
KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYy5zZXRGaWVsZChp
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNo
ZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRl
LW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY1ZTYzMDU1Nzhk
ZWY2OGI0ZTI2ZmZmOGU3MWNmOWUwYjk0OGZjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzCkBA
IC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGll
cnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBo
aWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24oYSwgZSkgeworICAgICAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cisg
ICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAg
ICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9y
KCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlm
ICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJv
d3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlv
bikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAg
fQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgp
OworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsK
KworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsK
KyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOwor
CisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBp
OworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRG
aWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5l
KEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
K25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKworbGV0IG9sZE9iamVjdCA9IG5ldyBDOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
ICAgaWYgKGkgPCA1MDAwKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGMuc2V0
RmllbGQoaSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGkgPT0gNTAwMCkKKyAgICAgICAg
ICAgIGdjKCk7CisgICAgICAgIG9sZE9iamVjdC5zZXRGaWVsZCh7cHJvcDogaX0pOworICAgICAg
ICBlZGVuR0MoKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShvbGRPYmplY3QuZ2V0RmllbGQo
KS5wcm9wLCBpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1w
dXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1j
b21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXpl
PTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2Zp
ZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJw
MSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAg
ICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAg
dGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAg
ICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAg
ICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
Yy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMu
c2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJk
MTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUt
bmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsNTQg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3Mg
QyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBs
ZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAl
IDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQor
ICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikg
eworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0g
aTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4j
ZmllbGQgPSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKwor
Zm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+
IDUwMDApIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNl
CisgICAgICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1h
ZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ2ZTQ1MzY0YjAyYjQzNTU0
ZWQzNjJkNGFhOGRlMTBiYzQ3ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9u
LmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nl
c3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlv
bihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24p
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVj
dXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQmFzZSB7CisgIGNv
bnN0cnVjdG9yKCkgeworICAgIHJldHVybiB7fTsKKyAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMg
QmFzZSB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIGdldEZpZWxkKGNoYW5nZVJlY2lldmVyKSB7
CisgICAgICAgIGxldCByID0gdGhpczsKKyAgICAgICAgaWYgKGNoYW5nZVJlY2lldmVyKSB7Cisg
ICAgICAgICAgICByID0ge307CisgICAgICAgIH0KKworICAgICAgICByLiNmaWVsZCA9ICdiYXIn
OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IGMgPSBu
ZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgaWYgKGkgPCA5
MDAwKQorICAgICAgICBDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMsIGZhbHNlKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwoYywgdHJ1ZSk7CisgICAgICAgIH0p
OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZz
ZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjAyZmFhODkxYWU0MTQwMWVlYWNmZGFlZDgzNWY0ZTQyZGY0ZTVl
NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29u
c3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSw1NyBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5n
PWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBl
KSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGl0ZXJhdGlv
bnMgPSAxMDAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7CitsZXQgY29uc3Ry
dWN0RGlmZmVyZW50ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQo
KTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChjb25zdHJ1Y3REaWZmZXJlbnQpCisgICAg
ICAgICAgICB0aGlzLmZvbyA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1l
dGhvZChqLCBvdGhlcikgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGxldCBvYmogPSB0
aGlzOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9uICYmIGkgPCBp
dGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7CisgICAgICAgIGlmIChqICUgMikgewor
ICAgICAgICAgICAgb3RoZXIuZm9vID0gajsKKyAgICAgICAgICAgIG9iaiA9IG90aGVyOworICAg
ICAgICB9CisgICAgICAgIG9iai4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZpZWxkKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90
b3R5cGUubWV0aG9kKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0
IG90aGVyQyA9IG5ldyBDKCk7CisKK2NvbnN0cnVjdERpZmZlcmVudCA9IHRydWU7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMzA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLm1l
dGhvZChpLCBvdGhlckMpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsK
K30KKwordHJpZ2dlckNvbXBpbGF0aW9uID0gdHJ1ZQorbGV0IGMgPSBuZXcgQygpOworYy5tZXRo
b2QoMCwgb3RoZXJDKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25z
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFu
dC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NzIwZWM4MDRhOTRmNzFlMzU4ZWE3YWFlNmE2ZmU4ZGVlMjU4NTUyCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1
dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
LCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9Cit9CisKK2xldCBpdGVyYXRpb25zID0gMTAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9u
ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSAwOworCisgICAgbWV0aG9kKCkgewor
ICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGls
YXRpb24gJiYgaSA8IGl0ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAg
dGhpcy4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQp
Oworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7
CisgICAgYy5tZXRob2QoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7
Cit9CisKK3RyaWdnZXJDb21waWxhdGlvbiA9IHRydWUKK2MubWV0aG9kKCk7Cithc3NlcnQuc2Ft
ZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2MjcwYmFiY2EzZDAw
N2I3YTc4MzA5NzcyNzk0ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChh
LCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24g
Y2xhc3NEZWNsYXJhdGlvbihkeW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgCisgICAgICAgIGluaXQoKSB7CisgICAgICAg
ICAgICB0aGlzW2R5bmFtaWNQcm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7CisgICAgICAgIH0K
KworICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7Cisg
ICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
LiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkco
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9IGNsYXNzRGVjbGFy
YXRpb24oJ3Byb3BlcnR5JyArIGkpOworICAgIGxldCBjID0gbmV3IENsYXNzKCk7CisgICAgYy5z
ZXRGaWVsZCgndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVz
dCcpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWlu
dmFsaWQtZGVmaW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlk
LWRlZmluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTU5OGU3MDE5ZDM3NGQ2MGFhOWQ3Y2RhOWNmNTQyYjcx
NjdmM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1pbnZhbGlkLWRlZmluZS5qcwpAQCAtMCwwICsxLDY0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkg
eworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBm
dW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9u
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNl
cHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZE92
ZXJyaWRlUmV0dXJuID0gZmFsc2U7CitsZXQgb2JqOworCitjbGFzcyBCIHsKKyAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgaWYgKHNob3VsZE92ZXJyaWRlUmV0dXJuKQorICAgICAgICAgICAg
cmV0dXJuIG9iajsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBDIGV4
dGVuZHMgQiB7CisgICNmaWVsZCA9ICd0ZXN0JzsKKworICBnZXRGaWVsZCgpIHsKKyAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0lu
bGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7
Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICAgIHNob3VsZE92ZXJyaWRlUmV0dXJu
ID0gdHJ1ZTsKKyAgICAgIG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAg
YXNzZXJ0LnNhbWVWYWx1ZShDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKG9iaiksICd0ZXN0Jyk7
CisgICAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgICAg
bmV3IEMoKTsKKyAgICAgIH0pOworICB9IGVsc2UgeworICAgICAgbGV0IG9iaiA9IHt9OworICAg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgICAgICAgYy5nZXRGaWVsZC5jYWxsKG9iaik7CisgICAgICB9KTsKKyAgfQorfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYzNDdjZWE2MDAwNWE5YjVmODY4YTBiNTNiZjIxZDc1YzI0ZmJiMDgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMK
QEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRU
aWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0
ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0g
ZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRTdG9yZSA9IGZhbHNlOworCitmdW5j
dGlvbiBmb28oKSB7CisgIGNsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAg
ICNmb287CisKKyAgICBpbml0KCkgeworICAgICAgaWYgKHNob3VsZFN0b3JlKQorICAgICAgICB0
aGlzLiNmb28gPSAxMjsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3IEMoKTsKK30KK25vSW5s
aW5lKGZvbyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+
IDEwMDApIHsKKyAgICBzaG91bGRTdG9yZSA9IHRydWU7CisgICAgYXNzZXJ0LnNob3VsZFRocm93
KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgZm9vKCk7CisgICAgfSk7CisgIH0gZWxzZSB7Cisg
ICAgZm9vKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzMxNGZhOWU3MDQ5ZjFiODBiMDJmYzBhNzE5NTQ3
ZTdhMjFkYjkwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAg
KzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAg
ICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVu
Y3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQg
dGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNl
cHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBnZXRGaWVs
ZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0K
KyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBu
b0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMg
PSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
dGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7
CisKK2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVsZCgpLCAn
dGVzdCcpOworYzIuc2V0RmllbGQoJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5nZXRGaWVs
ZCgpLCAnZm9vJyk7CisKK2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsICgpID0+IHsKKyAgICBjLnNldEZpZWxkLmNhbGwoYzIsICd0ZXN0Jyk7Cit9KTsKKworYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjMi5zZXRGaWVsZC5jYWxsKGMsICd0
ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1vc3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLW9zci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMTY5NWExYWRlMzc2OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVjMmRhCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKQEAgLTAsMCAr
MSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAg
IHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7
CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMu
aW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAg
ICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKwor
ICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAg
IGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9J
bmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRG
aWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9v
JyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43Y2ZjNTM2NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRo
LWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkg
eworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKwor
Y2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAg
ICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAg
ICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0
aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7
Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyAr
IGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0
YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFj
MjExODFiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNz
IEMgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAg
dGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
Oworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlk
ZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVy
ZW50LWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJh
NDE1ZGExNWZkMzcyOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVl
OiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
ICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4j
ZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShD
LnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRp
b24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJh
dGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9
IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407977</attachid>
            <date>2020-09-04 08:33:34 -0700</date>
            <delta_ts>2020-09-07 07:56:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200904123330.patch</filename>
            <type>text/plain</type>
            <size>162887</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li5iMzk2MGM1ZGZhZTc5ZTEy
MGJhMTBiYzIyNzAxOWNmZjljZDdiNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDktMDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGlyZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRl
RmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJ
bmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENv
bXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxP
cFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZh
bERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJ
RCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDkt
MDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJU
SU9OIEZBSUxFRDogdmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBD
dXN0b21HZXR0ZXJTZXR0ZXJUeXBlIC4vYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0
ZDg5NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYw
OGU3MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3
LDcgKzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJ
bnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2
YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjg5
NTVmMjJkZTJmMjYyNzg2ZTdlNjgxM2EyNDA4Yjg4N2U4OWRmLi43MGNkNzM1OWZjZTg1NWY1MDEy
YmZkMThlODU5OTk0OWQ0NjI3MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI1NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0Qjgw
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0
NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5
NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAog
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lz
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRC
ODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2
OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTIsOCArNDE1Miw2IEBACiAJCTg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFy
clBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0g
eWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZF
NjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1
QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5
VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3Myw2ICs0MTcxLDggQEAKIAkJODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGll
cmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1N
YXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRC
OEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjIsNiArNzYyMiw4IEBA
CiAJCQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0Uy
MEJEMDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2Vu
dC5jcHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAv
KiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJB
IC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NDkzLDggKzg0OTUsNiBAQAogCQkJCTBG
OTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0
QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRB
ODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIz
NDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZC
MDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMjksNiArMTAyMjksNyBAQAogCQkJCUNF
MjBCRDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2
ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFF
MDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNjksNyArMTAyNzAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMx
RkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdE
RDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRB
QTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZWQzYThkMWI1MTQzN2I1ZGFkY2QyOTVmNzMyYzBkOWEzM2ZkMDQ2ZS4uNDU1Y2JiOTQwYzEyNTg3
YzQ4YzhiYWNjNDU3ZDFmZWEyZTdlZTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtMjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRl
Y29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0Myw2ICs5NDIsNyBAQCBydW50aW1lL09i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVy
YXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNy
ZWF0aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5j
cHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0
Mzc2YjIwYjYzMjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNl
OWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywK
ICAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQ
dXRLaW5kLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0
LDIwIEBAIG9wIDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJy
aWVyW0pTQ2VsbF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0
S2luZDogUHJpdmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAg
ICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRl
QmFycmllcltKU0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBh
cmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBA
QCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFN
b2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5
NzZiMjJjZWI4Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CkBAIC0yMjcsNiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9w
RW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdl
dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2Us
IHByb3BlcnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAg
ICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAg
ICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmll
bGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjcyZWU3YmYwNWVhMWFmOTg4Mzc0YjU2NzFmOGNkNjhjNjI2ZTFm
YS4uZGVlYmQ5OWYxZDYxODllYWYyZjczMTMxMjM0MjA0MzdiYWFiY2I2MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAg
ICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAg
ICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAg
ICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJr
ZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFv
bGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3By
b3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUg
PQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0K
KyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0
cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMw
Miw2ICsxMzIyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAg
ICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYg
KCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29m
ZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJm
NmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
U2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAi
U3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlW
YWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlT
aXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9v
bGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0
cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0Rp
cmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJp
Y3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdl
dFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBp
c0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAg
ICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5p
c1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAg
cmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRp
YyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBh
dXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0g
ICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0
Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nl
c3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3Qg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBp
c0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmll
bGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0
IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNp
emU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0
czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+
IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBi
b29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVu
YW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2
YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUy
YTU3N2M0ZDJlYzUxZjhhLi44NDI4M2QyNGExZWZkY2I4YTRkNDVkNzEzYTA4ZjBkMjgxYTI0Zjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGIKICAgICByZXR1
cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
dWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMzE2LDcgKzMxNiwxNCBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RydQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAg
ICAgICAvLyBXZSBjYW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0
IG1vZGUgYW5kIGl0CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0
cmFuc2l0aW9uLiBXZSBuZWVkIHRvIHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y3BldGlvbiBpZiBpdCBldmVyIGdldHMgZXhlY3V0ZWQsIHNpbmNlCisgICAgICAgIC8vIHdl
IHdpbGwgYmUgdHJ5aW5nIHRvIHNldCBhIG5vdCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4KKyAg
ICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBoeXBvdGhl
c2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJvdmUgdGhh
dCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNvbWUgc2Fu
aXR5IGNoZWNrcy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZlY2Q3MzkxN2Zk
YTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
ICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFy
eS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFn
cykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJl
Y3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdz
LmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVG
aWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIz
ODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19
OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBB
IGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91
dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0
ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1v
ZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQ
dXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQot
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAg
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJv
b2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNE
aXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1f
ZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsK
LSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVz
cGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJi
M2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRm
NmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERp
cmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVG
aWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiMWE1NDhhMWZmYjAzM2Y5MTEzMTczMWFkYzBiNWE4
ZWJlOGVhMWE2Li5lM2YzZTg1ZDJlMzU3MTUwZTVkNjg0YjE3MjAzMGVjNzU5YTdhZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI1LDcgKzI3MjYsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkp
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ5LDEzICsyNzUw
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVm
aW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYx
NjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlmNTYzZGNhNTAx
YWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyArNDAyOSwyNSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisK
KyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAg
ICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5v
ZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0byBwcml2YXRl
RmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQgPyBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOworICAgICAgICAg
ICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgYm9v
bCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyMTIyYWE0OTVkYTc0M2NkZDVlZmMyZDRhY2FiNzYwNDNiZjMzY2I5Li44Yzg0MmIzNTI3MmYx
MGNjZGM4M2FlZWU4ZGZmOTQxNWU3ZWQ5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1
ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5
dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
IEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25zdCBQdXRCeUlk
U3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewor
ICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZU
TCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5
SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9n
cmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgIAorICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24p
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNl
dERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgYWRkVG9H
cmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gcHV0QnlJ
ZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CisgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxk
UHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAg
ICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFsdWUpOworICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3Ry
dWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdl
OworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0
ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAgICAgICAgIC8v
IHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgIEFTU0VS
VCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAgICAgICAgICAg
aWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNp
dGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICAgICAgICAg
IGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5v
ZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAgICAgLy8gTk9U
RTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291bGQgaW5zZXJ0
IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUgYmVjYXVzZToK
KyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdpbGwgZ2V0IHNj
YW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8vICAgdGhlIG9i
amVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcgdG8gcHV0IGlz
IGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28KKyAgICAgICAg
Ly8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQgd2lsbCBzZWUg
dGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAg
ICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2YWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgYmFzZSwgcHJv
cGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVjdHVyZSBnb2Vz
IGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRvR3JhcGgoUHV0
U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzksNTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIHRyeUNvbXBp
bGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2lu
KCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwg
YnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUs
IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8g
CisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAg
ICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAg
ICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50
aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRp
Zmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0Nv
bnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJl
bnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQpCisgICAgICAgICAgICAg
ICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9w
SW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQ
cm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKQEAgLTc1MDAsNyArNzY1OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1czsK
ICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1aWQsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKQEAgLTgyNzcsNyAr
ODQzNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4OCw3ICs4NDQ3LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUp
OwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZl
IHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAg
IG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJl
IHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2Ug
bWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFj
ZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1
cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBj
YXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0
cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3
NTVjNDEzOWNhLi4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAg
IGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgw
M2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjcyMjM4NTg3ODhhNjY3OTEwOGQ1YTE2YzZjYjEyMTM4
MWNmODE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9v
bCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQo
bm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGly
ZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCksIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVk
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdp
biA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUt
PmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUo
KTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBs
ZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIEFTU0VS
VChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAgICAgICAgICAgICAg
VHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9u
IDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1Zh
bGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29k
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9k
ZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0
cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhp
cyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgICAgIG1faW50
ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOwot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5n
ZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBh
bHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50
IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAgICAgICAgICAgIE11
bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRh
LmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlhbnRz
KCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChk
YXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRC
eUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGlu
ZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgUHJp
dmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzAsNiArMTM4NSw5MyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0
QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdl
LCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxlZCkKKyAg
ICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBO
b2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAgICAgICBB
U1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFic3RyYWN0
VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAgICAgQWJz
dHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7CisKKyAg
ICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJl
U2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCisg
ICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKKyAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NF
UlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAg
ICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29u
ZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRp
b24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBD
aGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25v
d25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9y
VHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAg
ICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
UHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2lu
dGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsK
KyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1f
Z3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24n
dCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMu
CisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0
QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAg
RWRnZShiYXNlTm9kZSkpOworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3Bs
YW4uaXNGVEwoKSk7CisKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRz
ID0gc3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0
KGRhdGEpOworICAgIH0KKwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAg
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIw
OGM3OS4uN2RmM2QzNWQ0MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBS
ZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggYjZjMGJiOGJhOTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uNWViYTdkMWYy
YzY4ZDA0YzkxZWU2MDE0OTFhMTc4ZmNhODAxOWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTA1LDEyICsxOTA1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYTVjZGYxYWE2ZjNkMmQ5YjFl
ODZlZDViZDIzMThiNjJkNmFjOGVlOS4uZTZiMGU4ZWQ0YzM4OGI4NmRlZTg0MzUzOTAyNjhjOGVk
YWNhMmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC02MTUsNyArNjE2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29udmVydFRvUHV0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0g
UHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gg
fHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWVCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQz
KGNoaWxkcmVuLmNoaWxkMigpKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpA
QCAtNjI1LDcgKzYyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRp
UHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09
IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9
PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJp
dmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBtX29wID0g
TXVsdGlQdXRCeU9mZnNldDsKICAgICB9CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2OSwxMyArMjI3MSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkp
OwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAg
ICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90Pigp
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yMjgzLDYgKzIyODUsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBp
ZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOworICAgICAgICBpZiAob3Ao
KSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkKKyAgICAg
ICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8
dWludDhfdD4oKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKKyAgICB9CisKICAgICBi
b29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNjg4MTVkMzFlMzYwMDM0NDNm
MTM1ZDViMzlkY2I1MmNkOTAyMjBlLi43N2E3ZWJmMWI5MTEzMzkwMDNlYmQ3MmExNmFkZWU4NGQ0
MjkwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMDgs
NiArMjA4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBt
YWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAg
bWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQdXRQcml2YXRlTmFtZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlH
ZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAppbmRleCAwZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5Li40MzM1MjY1
OWIyYWUwYWMzNTk3ZDlkNWRhODg5MGVlOThhODQ0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUg
IkhlYXBDZWxsLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNDgsNiArNDks
NyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBt
X3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50
aWZpZXIucmF3Qml0cygpKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFN
b2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZv
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkg
eyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCog
cHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA5ZDNmODllNjZlYWU2OGM2Y2QxNTQzYzc3
YzU3ZjU5MGQ5Nzg3NDc4Li5mZjM2Mjg0MDIxOWFiNDJjYTcwNzU3Y2Q5ZTVkY2FkOWQ2ZTJkYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM3OCw2ICsxMzc4LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRo
VGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZToKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCBiMDdjYmE3MGZlMTljNDEwZjJlZDVhNDA3NmQ4NDZhMjdkMWYxY2Y1Li45MTdk
ZTAyZmU2YmUyOGJjM2M4NzY5MmRiMGE1N2ZjOWU4NDI3NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTI2LDYgKzUyNiw4IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVm
aW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBj
YXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCBlMzBkNjZlMDgxOWZjMTQxM2U2ZmNkNGE2MmJjMWRlNWVkMTU1YWMw
Li40MjBlYTk0NmZjMzUyMDMzYTkzN2QyZmVlOWUzNDhlMzhkMmYxMDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzUyNCw2ICsz
NTI0LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5v
ZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworCisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKworICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eVZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2
YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihFQ01BTW9kZTo6c3RyaWN0KCkudmFsdWUoKSkpOwor
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2Rl
KQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKworICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCisg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERp
cmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisKKyAgICBub1Jlc3VsdChu
b2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFn
cyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMTQzOTYsNyArMTQ0MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpT
VmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAg
ICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFiNjMyMTdlMzZjNzFlYjFlZjBhMzZkODky
YzBlNjFkMjBmZTNlNTIuLmYwOGRmZTc2MjcyYWI0NDg1MmJlNDBkMWZkY2NlZDcyZDM4ODIwZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEzNjAsNiArMTM2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNl
bGxXaXRoU3RyaW5nKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hp
bGQzKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqLCBF
ZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBp
bGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlP
ZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgxMjVhZjRlMGExYzM2OGY4ZjRkNWEuLjYwOTUz
MWI4ZjU2NGI5ZDlhYzg2ZmE4ZmFlOGUzMzBmZGQwMDJlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjU5MCw2
ICsyNTkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDI3NzQ4MzJiY2YzNTM4N2MzYjVjMDdkMTNkOGY5ZGY3Y2Q1MGNhZDEuLmM2YzI3YzRi
MzgyNTUwOTVmY2Q1NDQ5OWQ4NWJkYWIxZWZmZWEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjk0OCw2ICsyOTQ4LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjb21waWxl
UHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggMDcxNTNiOGU0NzEyZjY4MjliNmViYzYzMjE3NDY2ZjgzZDQ2YzFj
NC4uNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQzOWE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgLy8gV2UgZW1pdCBJQyBj
b2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlkZW50aWZpZXIgYW5kIHdlIG5l
ZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAgICAvLyBiYXJyaWVyIGZvciBpdC4gT24g
UHV0UHJpdmF0ZU5hbWUsIHdlIHBlcmZvcm0gc3RvcmUgYmFycmllciBkdXJpbmcgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4MGIxNjg0NGFhYmFjZDg1NjY5NmQ4NDVmODFjM2M2
Zjk3NzM5N2EuLmI2YTgyYzcxZDQ0ZTk0N2NlMjlkMmUyNzliMGMwMzY4ZmRmYWMzNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5NCw2
ICszOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNl
IFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgIGNhc2Ug
RmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlZmRjYmI0
ZWI0NmQ3Yzc0N2YzZjY3OWZlYWZiNmZlNzE0MjM4ZTZjLi43YWU0MWUyYzYwNDlhNGNkNzI4ZTAx
NWQ0NDc5MWM3ZjcxZWZiM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xMDE3LDYgKzEwMTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRo
aXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgor
ICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICBjb21waWxlUHV0
UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBdG9t
aWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0Nv
bXBhcmVFeGNoYW5nZToKQEAgLTM5NDUsNiArMzk1MSwzMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQo
KQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsK
KworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdl
IGRvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICAgICAgYXV0byBw
dXRLaW5kID0gbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICAgICAgY2Fj
aGVkUHV0QnlJZChtX25vZGUsIGJhc2UsIHZhbHVlLCBFQ01BTW9kZTo6c3RyaWN0KCksIHB1dEtp
bmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKKyAgICB7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+cHJpdmF0ZUZpZWxk
UHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMg
OiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWMsCisgICAgICAgICAgICB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRy
KDApLCBtX291dC5jb25zdEludDMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlQXRvbWljc1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtNDE5MSwxNCArNDIyMywxMCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHZv
aWQgY2FjaGVkUHV0QnlJZChOb2RlKiBub2RlLCBMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBF
Q01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQogICAgIHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKLQotICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpOworICAgICAgICBBU1NFUlQoaWRlbnRpZmllcik7CiAKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwpAQCAtNDIxNCw3ICs0MjQyLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQyMzMs
NyArNDI2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERp
cmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAg
ICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5l
cmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBk
b25lID0gaml0LmxhYmVsKCk7CkBAIC00MjYxLDYgKzQyODgsMTcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSk7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGF1dG8gcHV0S2luZCA9IG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdDsKKyAgICAgICAg
Y2FjaGVkUHV0QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1Nzc4ZTdk
NTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJl
NzljZDQ2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5
LDkgKzEzOSw5IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIkl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2lu
Y2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA3NjI1MjAxOTc4YTJlNmE4OWEzZWE0MTI4ZjY0MDc2Mzc5NTZlODIy
Li45YWQyZjNiZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYyM2ZkZmQ3ZmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
c2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQpCkBAIC01ODcsNiArNTg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1
dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1l
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3N1YikKQEAgLTkwMiw3ICs5MDQsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5r
KCkKICAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKKworICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0byBiYWRU
eXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAg
ICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAgICAgICAg
ICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJhZFR5cGVKdW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAgICAgICAg
ICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21w
aWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQ
YXRoVGFyZ2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYxZWIzMTZm
ZTMzMzlhOTdkNTBlYzU0YjE5NTZjNzk3Li5iNDViZTNhZDUwMjc5MTUwYjc5MjQzYTA0ZmZiZWMx
MWY5MzFmOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcxLDYgKzcxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKICAgICBzdHJ1Y3QgT3BQdXRC
eVZhbERpcmVjdDsKKyAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQ
dXRUb1Njb3BlOwogCiAgICAgc3RydWN0IENhbGxSZWNvcmQgewpAQCAtMTYxLDYgKzE2MiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQnlWYWxD
b21waWxhdGlvbkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRI
b3RQYXRoVGFyZ2V0KQorICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQorICAgICAg
ICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAsIG5vdElu
ZGV4SnVtcChub3RJbmRleEp1bXApCisgICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdl
dCkKKyAgICAgICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwogICAg
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcDsKQEAgLTIzNCw2ICsyNDQsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNo
ZWRJZDxPcD4oYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2Rl
QmxvY2spOworICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1OSw2ICsyNzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBS
ZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAorICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisKICAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBKSVRBcnJheU1vZGUpOwogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CkBAIC00MDYs
MTEgKzQyNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHRo
ZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kKE9wKTsKIAogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBl
ciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50
aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dD
YXNlcyk7CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsK
IApAQCAtNjA1LDYgKzYyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Niw2ICs3
MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2Jq
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19p
bmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFlNjFkOTE4NWZlYzc1YmVlZWVhMWRjNDNi
YjZhNDcxZjJiZDdjZTcuLjM4ZTE4ZGJmMWVhMDViOTQ3N2UxOGQ4NmE5Y2RmNmNlMjNkMjRhNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0
QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2lu
ZCBwdXRLaW5kKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChw
dXRLaW5kKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRj
aCk7CiB9CkBAIC0xNTEsMTIgKzE1MCwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1Nz
aUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAo
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUp
IHsKLSAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgIGlmIChtX3B1dEtp
bmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0KSB7CiAgICAgICAgIEFTU0VSVChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgfQorCisgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsK
KyAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgfQog
CiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDI5YzJkMmU2ZDMy
OGRhOWNiMzc2MTE1ZDk5MmVhMmEyYzUwYzU5OTQuLjg1MzgzNWEzOTM1ODUyOTEyN2RlMmYzOTdi
NDk3OTk4MjRlMzZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMSwxMiArMTMwLDExIEBAIGNsYXNzIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6
c3RyaWN0KCkpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAog
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
YmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9k
ZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7
CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAg
CkBAIC0xNDUsNyArMTQzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2Vj
bWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCAyZjc2ZGIwMDY5MjExOGFmODUyZTcwNjI5NTAyNzQy
OTk4NWFjZmIyLi40NWY3ZjBjOTE4Y2ViM2JkYzc0N2U0M2VkY2UzMjZmYTEwMmU2NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksMjEgQEAg
QUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlk
IG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1v
ZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUg
RUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1l
KQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7CisgICAgcmV0dXJuIEVDTUFN
b2RlOjpzdHJpY3QoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1Qcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK1ByaXZhdGVGaWVsZFB1
dEtpbmQgSklUOjpwcml2YXRlRmllbGRQdXRLaW5kKE9wKQogewotICAgIHJldHVybiBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpOb25lOworICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpu
b25lKCk7CiB9CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkUHV0S2luZCBKSVQ6OnBy
aXZhdGVGaWVsZFB1dEtpbmQ8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSBvcCkK
IHsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAg
cmV0dXJuIG9wLm1fcHV0S2luZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFi
NzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li5mMDZkNTc0ZTkyOTU5NGI0NWIwZjg3M2E2MGE5Yzg4
NjA2MGQ4MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTc3MCwxMSArNzcwLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplCiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
KSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywg
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKTsKICAgICB9
KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTc4Niw3ICs3ODYsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFsdWUpOwogfQogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBB
U1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAogICAgICAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERp
cmVjdFByaXZhdGVGaWVsZFB1dCk7CisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBw
dXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFNldCk7CiAgICAgfSk7CiB9CiAK
QEAgLTExMDUsNyArMTEwNSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgcHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywg
ZWNtYU1vZGUpOwogfQogCi0KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTExOSw2ICsx
MTE4LDEzMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBPcHRpbWl6YXRp
b25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpOb3RPcHRp
bWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGlm
IChzdWJzY3JpcHQuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+
Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5kZXgoMCkpOworICAgICAgICAgICAgQVNTRVJU
KCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNl
ZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBw
cm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGlt
aXplZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBT
ZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihj
b2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3Vs
dDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6
OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAx
MCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8vIG5l
dmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29y
dGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUg
cHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNvdW50
IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAgICAg
aWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0aW1p
emF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisgICAg
aWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewor
ICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5kLmlzRGVmaW5l
KCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJp
dmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgCisg
ICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxl
eGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmlj
dCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0RlZmluZSgpKQor
ICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VPYmplY3QtPnB1
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9w
ZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRz
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8g
YW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJv
b2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChi
YXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBi
eVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQg
d2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUg
YWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVl
OworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
YWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDY1ZTcx
MjU5NTY4MzBhODgzZTgzMzMwNzk1MzllMjA0NDJjMDVkOTQuLjFjYzg5YzM3MmI2ZDFkMjAyOWEw
MzI0NjI3MTJiZjdiNjEzZTlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUg
IkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0xOTEsMTMgKzE5
MiwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZp
ZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qp
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlu
a0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVkMTcxOWE0NzM4OTI4YTBmMmM2MWJlM2Uy
ZGRkNDc0M2EuLmIxYWJmMjc3MTAyZDQ2MmU1YzU4YjFhNTI3MWE2ZGZmNmU0OTQzNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByaXZh
dGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTMx
Niw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGlu
IEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zNDYsNyArMzQ3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2
YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9k
ZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAg
ICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0NyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJ
bmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisK
KyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
KyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9u
SW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUp
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAg
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOwor
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBy
ZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKwor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQ
YXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3
ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBkaXJlY3Qg
PyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMTM1OCw3ICsx
NDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsK
IApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0UHJp
dmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSBieXRlY29kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBz
bG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVm
aW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7
CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChieXRlY29kZSwgcHV0S2luZCwg
cHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Cit9CisKIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgfHwgbW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYsNiArMTUxNCw0MCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8
T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29k
ZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNl
cywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxv
Y2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRo
VGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25l
VGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIHBh
dGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFu
ZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgeworICAg
ICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhj
YWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxpemUo
cGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZm
ZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVf
bmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBw
b2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFsSW5m
by0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1dG8gZ2VuZXJpY0Z1bmN0aW9u
ID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZpbmVQcml2YXRl
TmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJu
QWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNGdW5jdGlvbikp
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUzMTNiMmFmMzA4MWViMGY1YzFl
YTRjMzA1NzQ4Li5mMTVjMGQwMTYwMzBkZjU0ZjNjNWRiYjQ4ZTQwMDc5OWJjOWI5NjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIH0KIAog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFk
ZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFibGVKdW1wIGZh
c3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1w
KTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29k
ZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbElu
Zm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5k
OworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93UGF0aCA9IGxh
YmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpT
VmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFn
R1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJvcGVydHksIHBy
b3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0
S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0
cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21w
aWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxs
OworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA2YWEyNjA2
YWE5ZGI1Y2JiOWQ2NzI4MzI5YTkxZWNhYTRmZjQ0MzE4Li45MjkwY2JjOGY1YWFjZmZmMmFkZDQ4
NWRhODc1MTAyYWU3OWRjYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTUzNSwzNCArNTM1LDQ4IEBAIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAKIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3QpCiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2Ug
Tm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQot
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJp
Y3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKLSAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwotICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKHNs
b3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFBy
aXZhdGVGaWVsZFN0cmljdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHN0YXRp
YyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9w
ZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKIHsKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkgewotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChwdXRLaW5k
KSB7CisgICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNl
IERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RP
cHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNT
RVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0
ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKQEAgLTYw
OSw2ICs2MjMsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzUHJveHkgJiYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkRGVmaW5lKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlm
IChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CkBA
IC02NzAsNyArNjg3LDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0No
YWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlv
blNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYm
IHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0
LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0
dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY4
OCw3ICs3MDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0g
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25T
ZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xv
YmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1MjEsOCArMTUzNyw4IEBAIHZv
aWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rp
b24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgZWxzZSBpZiAo
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKQotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBlbHNlIGlmICh1bm9w
dGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3Qg
fHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemUpCisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0
QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdCB8
fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25Q
dXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IGY2MTBjMTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQxM2YuLmM4YzI2
MTUyNDNhZDhjMGE2ZGVkZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw5
ICs1OSw5IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKLSNp
bmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgi
CiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkNGQw
OTE2ZmYyZDc2MTQ0MDQzYTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZlMDZlNmJhYzk3
MGY1MzRiM2RiMTI4MjM5YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNj
ZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgp
KSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlz
U3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0gICAgaWYgKHN1
YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwotICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3Vi
bGUoKTsKLSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3Vi
bGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsK
LSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vi
c2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAgICAgICAgICBM
TElOVF9FTkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1dCB0byBhbiBv
YmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VM
WSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBB
U1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsK
ICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkp
CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAg
aWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2Rl
Lm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAg
ICBMTElOVF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6
OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNl
KTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBi
ZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBt
ZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0
TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAg
IGlmIChieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+
ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsK
KyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisK
KyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUu
aXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1
YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBp
ZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAg
ICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAg
ICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkg
eworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRj
aHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkg
cHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgp
LT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVE
ZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBi
eSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHku
Y2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUu
YXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxp
bmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3
UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0
cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3By
b3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNz
ZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxl
IGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9y
ZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAg
ICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkg
YSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxl
IGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2Vz
IG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9m
IHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAg
IC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBu
ZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwor
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2Nr
LCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNk
ZGUyNWI5ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgz
M2YzYTljMWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFj
ZWRkNGUwMzgxNDAxNjI5Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNl
Zjc5OTYxYTJhMDkwMDFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBA
IG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93
UGF0aCkKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdp
dGhSZWxvYWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQor
ICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRl
QmFycmllck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVC
YXJyaWVyRG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0
LCBjZWxsRmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJp
ZXJEb25lKQpAQCAtMTY5Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRl
X25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jh
c2UsIG1fdmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cp
CisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1l
dGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9v
bGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFt
ZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0
UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0
MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAj
IHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlv
bgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVC
YXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAg
ICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEp
CisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkK
KyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcs
IHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0
aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhv
bGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xv
dzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQor
ICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNv
ZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0ODA2MzZkMjc3
ZWJiZmFhMzU0My4uZmFmZjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhhOGZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwog
ICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0
ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQo
bV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMs
IHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxv
YWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIK
KyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5h
bWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0
eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAg
ICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAg
IyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAg
IGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwg
dDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVs
b2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0
YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFz
ZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246
CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMg
dGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQw
LCB0MikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3Zh
bHVlKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2go
KQorZW5kKQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3Ny
RXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVs
ZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQu
cHJpbnQoIlNldCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEw
MWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOwor
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21C
eXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0
ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0K
KyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1
cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2
YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92
YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM5MjU0MmY5MmU1ZjdhYjAyYWJjN2E3ZDNjMTg5NDY2YjdkNGRlMGEuLmQyZDA2ODI4
MGI0MTNlNDk0MDQ3YTNhZjExNjFkNGRlMjM4ZmRjNmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDkt
MDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VT
TmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUv
ZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVj
dXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qczogQWRk
ZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1w
cml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seW1v
cnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3B1dC1wdWJsaWMtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0
LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJl
Y3QuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0
aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFu
dC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9y
ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVy
ZW50LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA5LTAyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHlt
b3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWM2YzhjNDliZGVkMmUyYmNiMzc2NzdmNDY1NDE1NTFiODZkNTU2MgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3Bv
bHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz10cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgc2V0Rmll
bGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lu
bGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28g
PSAwOworCitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0IGMzID0gbmV3IEMo
KTsKK2MzLmJheiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVs
ZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmll
bGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MjYyOGQzODhiYjA1MGI2MmU2NTk4YmY3YzgzYWZhNDg4NjA4NTI5Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZh
dGUtZmllbGQuanMKQEAgLTAsMCArMSwxNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitjbGFzcyBDIHsKKyAgICAjZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAg
ICB0aGlzLiNmaWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAw
OyBpKyspIHsKKyAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYTMyZmNmYzU1NGU0OGVmNDc1Mzc3MWMzOTVmYjJlZThlYTY1ZTk1Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVs
ZC5qcwpAQCAtMCwwICsxLDI0IEBACitjbGFzcyBDIHsKKyAgICBmaWVsZDsKKworICAgIHNldEZp
ZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lu
bGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28g
PSAwOworCitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0IGMzID0gbmV3IEMo
KTsKK2MzLmJheiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVs
ZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXB1Ymxp
Yy1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTZmY2NlMmVmNjQxNjQ4M2U2MjI3M2M4ZjUwNDVlYjQ0MTY4NWU3NAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQu
anMKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQyB7CisgICAgZmllbGQ7CisKKyAgICBzZXRGaWVs
ZCh2YWx1ZSkgeworICAgICAgICB0aGlzLmZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9Jbmxp
bmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBp
ID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGMuc2V0RmllbGQoaSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWlu
c2VydGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJh
cnJpZXItaW5zZXJ0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNWU2MzA1NTc4ZGVmNjhiNGUyNmZmZjhl
NzFjZjllMGI5NDhmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0
LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpAQCAtMCwwICsxLDY5IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
KGEsIGUpIHsKKyAgICAgICAgaWYgKGEgIT09IGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhy
b3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhj
ZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2Vv
ZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1l
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUg
KyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkg
PSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQo
KSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0
IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChr
ZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAo
a2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAg
IHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikgewor
ICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5z
ZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBvbGRP
YmplY3QgPSBuZXcgQzsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGlmIChpIDwgNTAw
MCkgeworICAgICAgICBsZXQgYyA9IG5ldyBDOworICAgICAgICBjLnNldEZpZWxkKGkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChpID09IDUwMDApCisgICAgICAgICAgICBnYygpOworICAg
ICAgICBvbGRPYmplY3Quc2V0RmllbGQoe3Byb3A6IGl9KTsKKyAgICAgICAgZWRlbkdDKCk7Cisg
ICAgICAgIGFzc2VydC5zYW1lVmFsdWUob2xkT2JqZWN0LmdldEZpZWxkKCkucHJvcCwgaSk7Cisg
ICAgfQorfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFt
ZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kY2VjOGFkYmM0ODE0YTM2MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0
LWJ5LWlkLWRpcmVjdC5qcwpAQCAtMCwwICsxLDU0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAg
ICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5j
dG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0
aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cisg
ICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5p
dCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMi
XTsKKworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0g
aTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBp
OworCisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0g
PSBpOworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9Cit9Citub0lu
bGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGxldCBjID0gbmV3IEM7CisgICAgaWYgKGkgPiA1MDAwKSB7CisgICAgICAgIGFzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGMuc2V0RmllbGQuY2Fs
bCh7fSk7CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBjLnNldEZpZWxkKGkpOwor
fQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kY2VjOGFkYmM0ODE0YTM2MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQt
YXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDU0IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0y
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVu
Y3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUg
KyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
dG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhj
ZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVs
ZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEi
LCAicDIiLCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAg
dGhpc1trZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRo
aXNbInAxIl0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAg
IHRoaXNbInAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEM7CisgICAgaWYgKGkgPiA1MDAwKSB7CisgICAg
ICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGMu
c2V0RmllbGQuY2FsbCh7fSk7CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBjLnNl
dEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10cmFzaXRpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10
cmFzaXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkNmU0NTM2NGIwMmI0MzU1NGVkMzYyZDRhYThkZTEw
YmM0N2ZhOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcwpAQCAtMCwwICsx
LDUwIEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIs
ICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFs
c2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsK
KyAgICByZXR1cm4ge307CisgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNm
aWVsZCA9IDA7CisKKyAgICBnZXRGaWVsZChjaGFuZ2VSZWNpZXZlcikgeworICAgICAgICBsZXQg
ciA9IHRoaXM7CisgICAgICAgIGlmIChjaGFuZ2VSZWNpZXZlcikgeworICAgICAgICAgICAgciA9
IHt9OworICAgICAgICB9CisKKyAgICAgICAgci4jZmllbGQgPSAnYmFyJzsKKyAgICB9Cit9Citu
b0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGlmIChpIDwgOTAwMCkKKyAgICAgICAg
Qy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChjLCBmYWxzZSk7CisgICAgZWxzZSB7CisgICAgICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBDLnBy
b3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMsIHRydWUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9s
ZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIwMmZhYTg5MWFlNDE0MDFlZWFjZmRhZWQ4MzVmNGU0MmRmNGU1ZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmct
dG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsNTcgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIiwgIi0tdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlm
IChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVyYXRpb25zID0gMTAwMDAwOwor
bGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZhbHNlOworbGV0IGNvbnN0cnVjdERpZmZlcmVudCA9
IGZhbHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0
KCkgeworICAgICAgICBpZiAoY29uc3RydWN0RGlmZmVyZW50KQorICAgICAgICAgICAgdGhpcy5m
b28gPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtZXRob2Qoaiwgb3RoZXIp
IHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBsZXQgb2JqID0gdGhpczsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwgaXRlcmF0aW9uczsgaSsr
KQorICAgICAgICAgICAgYysrOworICAgICAgICBpZiAoaiAlIDIpIHsKKyAgICAgICAgICAgIG90
aGVyLmZvbyA9IGo7CisgICAgICAgICAgICBvYmogPSBvdGhlcjsKKyAgICAgICAgfQorICAgICAg
ICBvYmouI2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLm1ldGhvZCk7
Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRG
aWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBvdGhlckMgPSBuZXcg
QygpOworCitjb25zdHJ1Y3REaWZmZXJlbnQgPSB0cnVlOworCitmb3IgKGxldCBpID0gMDsgaSA8
IDMwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2QoaSwgb3RoZXJD
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJD
b21waWxhdGlvbiA9IHRydWUKK2xldCBjID0gbmV3IEMoKTsKK2MubWV0aG9kKDAsIG90aGVyQyk7
Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1w
dXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFu
dC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcyMGVjODA0YTk0Zjcx
ZTM1OGVhN2FhZTZhNmZlOGRlZTI1ODU1MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0Lmpz
CkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVk
VGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNz
SW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQg
aXRlcmF0aW9ucyA9IDEwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZhbHNlOworY2xh
c3MgQyB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgbGV0IGMg
PSAwOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9uICYmIGkgPCBp
dGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7CisgICAgICAgIHRoaXMuI2ZpZWxkID0g
YzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxk
OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IGMg
PSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgIGMubWV0aG9k
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDApOworfQorCit0cmlnZ2Vy
Q29tcGlsYXRpb24gPSB0cnVlCitjLm1ldGhvZCgpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdl
bmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ2YzI5OWM2NjI3MGJhYmNhM2QwMDdiN2E3ODMwOTc3Mjc5
NGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
Z2VuZXJpYy5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dV
bnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAg
IGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUg
KyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRp
b24oZHluYW1pY1Byb3BlcnR5KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9IHRo
aXMuaW5pdCgpOworICAgIAorICAgICAgICBpbml0KCkgeworICAgICAgICAgICAgdGhpc1tkeW5h
bWljUHJvcGVydHldID0gZHluYW1pY1Byb3BlcnR5OworICAgICAgICB9CisKKyAgICAgICAgc2V0
RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAg
ICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAg
bm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4g
QzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQ2xhc3MgPSBjbGFzc0RlY2xhcmF0aW9uKCdwcm9wZXJ0
eScgKyBpKTsKKyAgICBsZXQgYyA9IG5ldyBDbGFzcygpOworICAgIGMuc2V0RmllbGQoJ3Rlc3Qn
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTk1OThlNzAxOWQzNzRkNjBhYTlkN2NkYTljZjU0MmI3MTY3ZjNiNAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZp
bmUuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBi
dXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0
aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
ZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRp
b24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0
aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRPdmVycmlkZVJldHVybiA9
IGZhbHNlOworbGV0IG9iajsKKworY2xhc3MgQiB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIGlmIChzaG91bGRPdmVycmlkZVJldHVybikKKyAgICAgICAgICAgIHJldHVybiBvYmo7Cisg
ICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEIgeworICAj
ZmllbGQgPSAndGVzdCc7CisKKyAgZ2V0RmllbGQoKSB7CisgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgIH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
aWYgKGkgPiAxMDAwKSB7CisgICAgICBzaG91bGRPdmVycmlkZVJldHVybiA9IHRydWU7CisgICAg
ICBvYmogPSB7fTsKKyAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgIGFzc2VydC5zYW1lVmFs
dWUoQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChvYmopLCAndGVzdCcpOworICAgICAgYXNzZXJ0
LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICAgIG5ldyBDKCk7CisgICAg
ICB9KTsKKyAgfSBlbHNlIHsKKyAgICAgIGxldCBvYmogPSB7fTsKKyAgICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAg
ICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICAgIGMuZ2V0
RmllbGQuY2FsbChvYmopOworICAgICAgfSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzQ3Y2VhNjAw
MDVhOWI1Zjg2OGEwYjUzYmYyMWQ3NWMyNGZiYjA4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCkBAIC0wLDAgKzEsNTAg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAg
IH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAg
ICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5j
dG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0
aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cisg
ICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVuY3Rpb24gZm9vKCkgewor
ICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAjZm9vOworCisgICAg
aW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAgdGhpcy4jZm9vID0gMTI7
CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lubGluZShmb28pOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAg
c2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgp
ID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9IGVsc2UgeworICAgIGZvbygpOworICB9
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRh
dGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzMzMTRmYTllNzA0OWYxYjgwYjAyZmMwYTcxOTU0N2U3YTIxZGI5MAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDY5IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAg
IHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJl
d0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAg
ICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3Rh
bmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUu
bmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0g
J3Rlc3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNm
aWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNz
KCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBj
LnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOworCitsZXQgYzIgPSBu
ZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKK2MyLnNl
dEZpZWxkKCdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwgJ2ZvbycpOwor
CitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgYy5zZXRGaWVsZC5jYWxsKGMyLCAndGVzdCcpOworfSk7CisKK2Fzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCAoKSA9PiB7CisgICAgYzIuc2V0RmllbGQuY2FsbChjLCAndGVzdCcpOworfSk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE2OTVhMWFk
ZTM3NjljNjE0ZGRjOTMwMTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKwor
bGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAg
IGluaXQoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisgICAgICAgICAgICB0aGlzLnByb3Bl
cnR5ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2
KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9y
ICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBp
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13
aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
cG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NmYzUzNjRj
YTllMDJjZTk1MjNiYWM0MTVjMTgwMTQ2ZTE1Njg5ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1i
b2wuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBw
b3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBi
dXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAg
ICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgJSAy
KQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgICAgICByZXR1cm4gJ3Rl
c3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2
OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBj
b3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5n
ZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTdhMzI5N2JlZDgyZDdjMGM3ZTUyZDU1YTc1ZTVhYzIxMTgxYjdjYgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitjbGFzcyBDIHsKKyAgICAjZmll
bGQgPSAndGVzdCc7CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0g
djsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxk
OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRM
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVs
ZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFkMzdkODE3ZWRlMTRhMjAzNWYzNWE2ODhiYTQxNWRhMTVmZDM3MjkK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgt
ZGlmZmVyZW50LWlkZW50aWZpZXIuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEs
IGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBj
bGFzc0RlY2xhcmF0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisgICAg
CisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAg
ICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
I2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0
RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
CisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKK2xldCBDMSA9
IGNsYXNzRGVjbGFyYXRpb24oKTsKK2xldCBDMiA9IGNsYXNzRGVjbGFyYXRpb24oKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBpICUgMiA/IG5ldyBD
MSA6IG5ldyBDMjsKKyAgICBjLnNldEZpZWxkKCd0ZXN0JyArIGkpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcgKyBpKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408180</attachid>
            <date>2020-09-07 07:56:52 -0700</date>
            <delta_ts>2020-09-17 09:51:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200907115648.patch</filename>
            <type>text/plain</type>
            <size>161642</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li5iMzk2MGM1ZGZhZTc5ZTEy
MGJhMTBiYzIyNzAxOWNmZjljZDdiNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzMgQEAKKzIwMjAtMDktMDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGlyZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
ZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFBy
aXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0NhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRl
RmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRL
aW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJ
bmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNh
Y2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpCeVZhbENv
bXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUZpZWxkUHV0S2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkUHV0S2luZDxP
cFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZh
bERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0
ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJ
RCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZUZpZWxkUHV0S2luZDo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6ZGVmaW5lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNOb25lIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNTZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc0RlZmluZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6UHJpdmF0ZUZpZWxkUHV0S2luZCk6CisKIDIwMjAtMDkt
MDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJU
SU9OIEZBSUxFRDogdmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBD
dXN0b21HZXR0ZXJTZXR0ZXJUeXBlIC4vYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0
ZDg5NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYw
OGU3MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3
LDcgKzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJ
bnQuaAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2
YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjg5
NTVmMjJkZTJmMjYyNzg2ZTdlNjgxM2EyNDA4Yjg4N2U4OWRmLi43MGNkNzM1OWZjZTg1NWY1MDEy
YmZkMThlODU5OTk0OWQ0NjI3MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI1NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0Qjgw
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0
NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5
NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAog
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lz
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRC
ODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2
OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTIsOCArNDE1Miw2IEBACiAJCTg2
NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFy
clBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0g
eWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZF
NjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1
QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5
VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3Myw2ICs0MTcxLDggQEAKIAkJODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGll
cmVkTU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1N
YXBBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
RmllbGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRC
OEEyMDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyTUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ck1JUFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjIsNiArNzYyMiw4IEBA
CiAJCQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0Uy
MEJEMDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2Vu
dC5jcHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAv
KiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdD
OTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAv
KiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJB
IC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NDkzLDggKzg0OTUsNiBAQAogCQkJCTBG
OTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0
QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRB
ODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIz
NDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZC
MDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMjksNiArMTAyMjksNyBAQAogCQkJCUNF
MjBCRDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2
ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFF
MDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVB
NDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNjksNyArMTAyNzAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMx
RkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdE
RDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRB
QTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZWQzYThkMWI1MTQzN2I1ZGFkY2QyOTVmNzMyYzBkOWEzM2ZkMDQ2ZS4uNDU1Y2JiOTQwYzEyNTg3
YzQ4YzhiYWNjNDU3ZDFmZWEyZTdlZTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtMjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRl
Y29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0Myw2ICs5NDIsNyBAQCBydW50aW1lL09i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVy
YXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNy
ZWF0aW5nRnV6emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5j
cHAKIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0
Mzc2YjIwYjYzMjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNl
OWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywK
ICAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQ
dXRLaW5kLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0
LDIwIEBAIG9wIDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJy
aWVyW0pTQ2VsbF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0
S2luZDogUHJpdmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAg
ICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRl
QmFycmllcltKU0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdT
dHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBh
cmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBA
QCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFN
b2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5
NzZiMjJjZWI4Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CkBAIC0yMjcsNiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9w
RW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdl
dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2Us
IHByb3BlcnR5KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZh
bHVlKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAg
ICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAg
ICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmll
bGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjcyZWU3YmYwNWVhMWFmOTg4Mzc0YjU2NzFmOGNkNjhjNjI2ZTFm
YS4uZGVlYmQ5OWYxZDYxODllYWYyZjczMTMxMjM0MjA0MzdiYWFiY2I2MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBA
QCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAg
ICAgTElOSyhPcFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAg
ICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAg
ICAgICAgIExJTksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJr
ZWQob2xkU3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFv
bGRTdHJ1Y3R1cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3By
b3BlcnR5LmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUg
PQorICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0K
KyAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0
cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMw
Miw2ICsxMzIyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAg
ICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYg
KCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29m
ZnNldCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhl
YXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJm
NmI4YTBhYWUzLi5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
U2l6ZS5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAi
U3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTI1OCw0NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAg
ICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlW
YWxGbGFncywgc2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlT
aXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9v
bGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0
cmljdAotICAgIC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0Rp
cmVjdAotICAgIC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaXNEaXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJp
Y3RCaXQgPSAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZE1hc2sgPSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRTaGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdl
dFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBp
c0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAg
ICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5p
c1N0cmljdCgpKTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAg
cmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRp
YyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBh
dXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0g
ICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0
Qml0KTsKLSAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nl
c3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3Qg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVy
biBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBp
c0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmll
bGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVj
bWFNb2RlKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0
IEBAIHN0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNp
emU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0
czxQcml2YXRlRmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+
IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBi
b29sIGNoZWNrKFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBCYXNlOjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVu
YW1lIEJhc2U6OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2
YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUy
YTU3N2M0ZDJlYzUxZjhhLi44NDI4M2QyNGExZWZkY2I4YTRkNDVkNzEzYTA4ZjBkMjgxYTI0Zjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGIKICAgICByZXR1
cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
dWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMzE2LDcgKzMxNiwxNCBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RydQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAg
ICAgICAvLyBXZSBjYW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0
IG1vZGUgYW5kIGl0CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0
cmFuc2l0aW9uLiBXZSBuZWVkIHRvIHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y3BldGlvbiBpZiBpdCBldmVyIGdldHMgZXhlY3V0ZWQsIHNpbmNlCisgICAgICAgIC8vIHdl
IHdpbGwgYmUgdHJ5aW5nIHRvIHNldCBhIG5vdCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4KKyAg
ICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBoeXBvdGhl
c2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJvdmUgdGhh
dCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNvbWUgc2Fu
aXR5IGNoZWNrcy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZlY2Q3MzkxN2Zk
YTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
ICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFy
eS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFn
cykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MuaXNEaXJl
Y3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAgaWYgKGZsYWdz
LmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVG
aWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNlMzAyYmY5YzIz
ODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBDcmVhdGUsCi19
OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBB
IGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91
dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUg
ZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21h
TW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0
ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1v
ZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQ
dXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQot
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQotICAg
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJv
b2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QoaXNE
aXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkK
LSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAgICAgICAsIG1f
ZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9pc0RpcmVjdDsK
LSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKLSAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVz
cGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBkNTI5ZDJhZWJi
M2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVmYjBjNjJmYjRm
NmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERp
cmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVG
aWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiMWE1NDhhMWZmYjAzM2Y5MTEzMTczMWFkYzBiNWE4
ZWJlOGVhMWE2Li5lM2YzZTg1ZDJlMzU3MTUwZTVkNjg0YjE3MjAzMGVjNzU5YTdhZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI1LDcgKzI3MjYsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkp
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzQ5LDEzICsyNzUw
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVm
aW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkwMmYyMDcyYjYx
NjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlmNTYzZGNhNTAx
YWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyArNDAyOSwyNSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisK
KyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAg
ICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0IHx8IG5v
ZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0byBwcml2YXRl
RmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQgPyBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7CiAgICAg
ICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOworICAgICAgICAg
ICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAgICAgICAgYm9v
bCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyMTIyYWE0OTVkYTc0M2NkZDVlZmMyZDRhY2FiNzYwNDNiZjMzY2I5Li44Yzg0MmIzNTI3MmYx
MGNjZGM4M2FlZWU4ZGZmOTQxNWU3ZWQ5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
Ci0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0
b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1
ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIEJ5dGVjb2Rl
SW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRsZVB1dFByaXZh
dGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
Qnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICBy
ZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5
dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
IEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVCbG9jayhCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25zdCBQdXRCeUlk
U3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewor
ICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZU
TCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5
SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9n
cmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgIAorICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24p
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNl
dERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgYWRkVG9H
cmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gcHV0QnlJ
ZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CisgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxk
UHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAg
ICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFsdWUpOworICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3Ry
dWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdl
OworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0
ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAgICAgICAgIC8v
IHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgIEFTU0VS
VCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAgICAgICAgICAg
aWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNp
dGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICAgICAgICAg
IGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5v
ZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAg
ICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAgICAgLy8gTk9U
RTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291bGQgaW5zZXJ0
IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUgYmVjYXVzZToK
KyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdpbGwgZ2V0IHNj
YW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8vICAgdGhlIG9i
amVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcgdG8gcHV0IGlz
IGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28KKyAgICAgICAg
Ly8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQgd2lsbCBzZWUg
dGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAg
ICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2YWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgYmFzZSwgcHJv
cGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVjdHVyZSBnb2Vz
IGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRvR3JhcGgoUHV0
U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1fZ3JhcGguY29t
cGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNl
QmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzksNTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29sIHRyeUNvbXBp
bGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2lu
KCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwg
YnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUs
IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8g
CisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5mby0+c3R1YkluZm8KKyAgICAgICAgICAg
ICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCisgICAgICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisg
ICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworICAgICAgICAg
ICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNhY2hlZElkOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50
aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRp
Zmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0Nv
bnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1YkluZm8sIGN1cnJl
bnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQpCisgICAgICAgICAgICAg
ICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9w
SW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3ByaXZhdGVfbmFtZSk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlZmluZURhdGFQ
cm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNl
KTsKQEAgLTc1MDAsNyArNzY1OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1czsK
ICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1aWQsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKQEAgLTgyNzcsNyAr
ODQzNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOworICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtODI4OCw3ICs4NDQ3LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUp
OwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZl
IHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFy
cmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAg
IG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJl
IHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2Ug
bWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAyZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFj
ZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWExMmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX3N1
cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBj
YXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0
cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4NWM2MDk2ODAzZDViMTcxYTI0NTI3NDdkYzg4MDQ3
NTVjNDEzOWNhLi4yNzBmNGM4ODJhMjIwOGZhODkyMzczY2VkMmZiNjZiMGVlN2RmNjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlk
OgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAg
IGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVlMmJkOWM5NWUwODJiMjgw
M2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjcyMjM4NTg3ODhhNjY3OTEwOGQ1YTE2YzZjYjEyMTM4
MWNmODE2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAyICs2NTgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAgICAgYm9v
bCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQo
bm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGlzRGly
ZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCksIGNoYW5nZWQsIGFscmVhZHlIYW5kbGVk
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdp
biA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUt
PmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5vZGUo
KTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBs
ZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIEFTU0VS
VChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7Ci0gICAgICAgICAgICAgICAg
VHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9u
IDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1Zh
bGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29k
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9k
ZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0
cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhp
cyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgotICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgICAgIG1faW50
ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMpOwot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5n
ZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBh
bHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50
IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKLQotICAgICAgICAgICAgICAgIE11
bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRh
LmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlhbnRz
KCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChk
YXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRC
eUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGlu
ZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgUHJp
dmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzAsNiArMTM4NSw5MyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0
QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdl
LCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2
YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBib29sJiBhbHJlYWR5SGFuZGxlZCkKKyAg
ICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBO
b2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKKworICAgICAgICBB
U1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIEFic3RyYWN0
VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2VOb2RlKTsKKyAgICAgICAgQWJz
dHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKHZhbHVlRWRnZSk7CisKKyAg
ICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJl
U2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCisg
ICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKKyAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NF
UlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisgICAg
ICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29u
ZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgeworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRp
b24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1fdm0pOworICAgICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBD
aGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIGNvbmRpdGlvbi5vYmplY3QoKSwgS25v
d25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgeworICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9y
VHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAg
ICAgICAgICAgIG5ld1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
UHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICBtX2lu
dGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsK
KyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuY2hhbmdlU3RydWN0dXJlKG1f
Z3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CisKKyAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24n
dCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMu
CisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0
QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAg
RWRnZShiYXNlTm9kZSkpOworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7CisgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3Bs
YW4uaXNGVEwoKSk7CisKKyAgICAgICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRz
ID0gc3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOworICAgICAgICBub2RlLT5jb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0
KGRhdGEpOworICAgIH0KKwogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAg
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMThiODgzOTY5YjY5MGYxM2Y2ZmZiZmI3ZDc1NmJiM2NhMjIw
OGM3OS4uN2RmM2QzNWQ0MjYyOGRjZDA5NGJiNWQ3Yzk3YTAxNjE2NjQzNzBiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzIxLDYgKzMyMSw4IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBS
ZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggYjZjMGJiOGJhOTkwZmZmMzVjMDAzYzg2MDE3ZWUwNjczNDEwZTAzOC4uNWViYTdkMWYy
YzY4ZDA0YzkxZWU2MDE0OTFhMTc4ZmNhODAxOWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTA1LDEyICsxOTA1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisKKyAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYTVjZGYxYWE2ZjNkMmQ5YjFl
ODZlZDViZDIzMThiNjJkNmFjOGVlOS4uY2Y2NzBiMTc1N2NkYTk4OWJmNmFjZDdhMjgwOThiNDM4
YzRhNzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIK
ICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCkBAIC02MTUsNyArNjE2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29udmVydFRvUHV0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0g
UHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gg
fHwgbV9vcCA9PSBNdWx0aVB1dEJ5T2Zmc2V0IHx8IG1fb3AgPT0gUHV0UHJpdmF0ZU5hbWVCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSAmZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQz
KGNoaWxkcmVuLmNoaWxkMigpKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpA
QCAtNjI1LDcgKzYyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRp
UHV0QnlPZmZzZXQoTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09
IFB1dEJ5SWRGbHVzaCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9
PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHV0UHJp
dmF0ZU5hbWVCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBtX29wID0g
TXVsdGlQdXRCeU9mZnNldDsKICAgICB9CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI4Myw2ICsyMjg1LDIzIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KICAgICAKKyAgICBib29sIGhhc1ByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAg
IHsKKyAgICAgICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgfHwgb3AoKSA9PSBQdXRQcml2
YXRlTmFtZUJ5SWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2lu
ZCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpKTsKKyAg
ICAgICAgaWYgKG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWUgfHwgb3AoKSA9PSBQdXRQcml2YXRlTmFt
ZUJ5SWQpCisgICAgICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUo
bV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCk7Cisg
ICAgfQorCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChv
cCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDY4ODE1
ZDMxZTM2MDAzNDQzZjEzNWQ1YjM5ZGNiNTJjZDkwMjIwZS4uNzdhN2ViZjFiOTExMzM5MDAzZWJk
NzJhMTZhZGVlODRkNDI5MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaApAQCAtMjA4LDYgKzIwOCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhQdXRCeVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncykgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVz
aCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgKaW5kZXggMGU0YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEw
YjYzOS4uNDMzNTI2NTliMmFlMGFjMzU5N2Q5ZDVkYTg4OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVhYmxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
QEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9w
ZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZv
KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhF
Q01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4
cGxpY2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRL
aW5kLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGlj
aXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOWQzZjg5ZTY2ZWFl
NjhjNmNkMTU0M2M3N2M1N2Y1OTBkOTc4NzQ3OC4uZmYzNjI4NDAyMTlhYjQyY2E3MDc1N2NkOWU1
ZGNhZDlkNmUyZGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzNzgsNiArMTM3OCw4
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2Fz
ZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWU6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAg
ICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3
ZDFmMWNmNS4uOTE3ZGUwMmZlNmJlMjhiYzNjODc2OTJkYjBhNTdmYzllODQyNzQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1
MjYsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVy
QnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6
CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
ICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJi
YzFkZTVlZDE1NWFjMC4uNDIwZWE5NDZmYzM1MjAzM2E5MzdkMmZlZTllMzQ4ZTM4ZDJmMTA4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTM1MjQsNiArMzUyNCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWxXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2Rl
KiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MygpKTsKKworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5
R1BSID0gcHJvcGVydHlWYWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5j
aGlsZDIoKSwgcHJvcGVydHlHUFIpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0
aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5l
cmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdz
LCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVkSW1tMzIoRUNNQU1vZGU6OnN0cmljdCgp
LnZhbHVlKCkpKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgbm9SZXN1bHQo
bm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5
SWQoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
KyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisKKyAg
ICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2Ug
ZG9uJ3QgbmVlZAorICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCisgICAgYXV0byBwdXRLaW5kID0g
bm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBEaXJlY3RQcml2YXRlRmll
bGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7CisgICAgY2FjaGVkUHV0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworCisg
ICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVj
a1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE0Mzk2LDcgKzE0NDM0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZh
bHVlUmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0
S2luZCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAxYjYzMjE3ZTM2Yzcx
ZWIxZWYwYTM2ZDg5MmMwZTYxZDIwZmUzZTUyLi5mMDhkZmU3NjI3MmFiNDQ4NTJiZTQwZDFmZGNj
ZWQ3MmQzODgyMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0xMzYwLDYgKzEzNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxl
UHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGls
ZDIsIEVkZ2UmIGNoaWxkMyk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5
bWJvbChOb2RlKiwgRWRnZSYgY2hpbGQxLCBFZGdlJiBjaGlsZDIsIEVkZ2UmIGNoaWxkMyk7CiAg
ICAgdm9pZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7CisgICAgdm9pZCBjb21waWxl
UHV0UHJpdmF0ZU5hbWUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJ
ZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVB1dEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVy
ZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCA5NzRlN2E5NmE4YWEyZWQyNzA4MTI1YWY0ZTBhMWMzNjhm
OGY0ZDVhLi42MDk1MzFiOGY1NjRiOWQ5YWM4NmZhOGZhZThlMzMwZmRkMDAyZWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTI1OTAsNiArMjU5MCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6IHsKKyAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21w
aWxlUHV0UHJpdmF0ZU5hbWVCeUlkKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCAyNzc0ODMyYmNmMzUzODdjM2I1YzA3ZDEzZDhmOWRmN2NkNTBj
YWQxLi5jNmMyN2M0YjM4MjU1MDk1ZmNkNTQ0OTlkODViZGFiMWVmZmVhMzkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5
NDgsNiArMjk0OCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAg
ICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICBjb21waWxlUHV0UHJp
dmF0ZU5hbWVCeUlkKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmll
ckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDA3MTUzYjhlNDcxMmY2ODI5YjZlYmM2MzIx
NzQ2NmY4M2Q0NmMxYzQuLjcwZTc4Mzk4YzM2YTI4NjhmYWY3MjdjNDhlZjEzOTEyZDhkMzlhNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICAgICAgICAgIC8v
IFdlIGVtaXQgSUMgY29kZSB3aGVuIHdlIGhhdmUgYSBub24tbnVsbCBjYWNoZWFibGVJZGVudGlm
aWVyIGFuZCB3ZSBuZWVkIHRvIGludHJvZHVjZSBhCisgICAgICAgICAgICAgICAgLy8gYmFycmll
ciBmb3IgaXQuIE9uIFB1dFByaXZhdGVOYW1lLCB3ZSBwZXJmb3JtIHN0b3JlIGJhcnJpZXIgZHVy
aW5nIHNsb3cgcGF0aCBleGVjdXRpb24uCisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVy
KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjODBiMTY4NDRhYWJhY2Q4NTY2
OTZkODQ1ZjgxYzNjNmY5NzczOTdhLi5iNmE4MmM3MWQ0NGU5NDdjZTI5ZDJlMjc5YjBjMDM2OGZk
ZmFjMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0zOTQsNiArMzk0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVy
ZToKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggZWZkY2JiNGViNDZkN2M3NDdmM2Y2NzlmZWFmYjZmZTcxNDIzOGU2Yy4uN2FlNDFlMmM2
MDQ5YTRjZDcyOGUwMTVkNDQ3OTFjN2Y3MWVmYjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxNyw2ICsxMDE3LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQ
dXRCeVZhbFdpdGhUaGlzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKKyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICAg
ICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQXRvbWljc0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNzQW5kOgogICAgICAgICBj
YXNlIEF0b21pY3NDb21wYXJlRXhjaGFuZ2U6CkBAIC0zOTQ1LDYgKzM5NTEsMzIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1
ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlUHV0UHJp
dmF0ZU5hbWVCeUlkKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSk7CisKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5l
cmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCisgICAgICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCisg
ICAgICAgIGF1dG8gcHV0S2luZCA9IG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVm
aW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7
CisgICAgICAgIGNhY2hlZFB1dEJ5SWQobV9ub2RlLCBiYXNlLCB2YWx1ZSwgRUNNQU1vZGU6OnN0
cmljdCgpLCBwdXRLaW5kKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZSgpCisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkp
OworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExWYWx1ZSBiYXNl
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0g
bG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUt
PnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0
ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljLAorICAgICAgICAg
ICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBtX291
dC5jb25zdEludFB0cigwKSwgbV9vdXQuY29uc3RJbnQzMihFQ01BTW9kZTo6c3RyaWN0KCkudmFs
dWUoKSkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUF0b21pY3NSZWFkTW9kaWZ5V3JpdGUo
KQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTQxOTEsMTQgKzQyMjMsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVQdXRC
eUlkKCkKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoTm9kZSogbm9kZSwgTFZhbHVlIGJhc2UsIExW
YWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKICAgICB7Ci0g
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Ci0KLSAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCiAgICAg
ICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKQEAgLTQyMTQs
NyArNDI0Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7Ci0gICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKICAgICAg
ICAgCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CkBAIC00MjMzLDcgKzQyNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVn
aXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5
SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5v
bmUpOworICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtNDI2MSw2ICs0Mjg4LDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgfQor
CisgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBhdXRv
IHB1dEtpbmQgPSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3Q7CisgICAgICAgIGNhY2hlZFB1dEJ5SWQobm9kZSwgYmFzZSwgdmFsdWUsIG5vZGUtPmVjbWFN
b2RlKCksIHB1dEtpbmQpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0ZXJm
bHkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggZDk2
NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNS4uNzMxNzEwMDk2Y2YzZTI0OThh
ZTQ1ZGRhMjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIKQEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNv
ZGUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJ
ZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFs
RmxhZ3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNzYyNTIwMTk3OGEyZTZhODlhM2VhNDEyOGY2
NDA3NjM3OTU2ZTgyMi4uOWFkMmYzYmRlMmFlZGI5NjQwMWJlZjBlYjJkMmM2MjNmZGZkN2ZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI2LDYgKzQyNiw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9p
ZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25h
bWUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0
ZXJfc2V0dGVyX2J5X2lkKQpAQCAtNTg3LDYgKzU4OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9zdWIpCkBAIC05MDIsNyArOTA0LDEyIEBAIENvbXBpbGF0aW9uUmVz
dWx0IEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2Nh
dGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNo
YWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAg
PSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAg
ICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihw
YXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25J
bmZvLmJhZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxl
QmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAg
ICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
KCk7CisgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkK
KyAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENv
bXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJn
ZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQp
KTsKICAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAg
ICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0
aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNTA4
YWY1MGY2MWViMzE2ZmUzMzM5YTk3ZDUwZWM1NGIxOTU2Yzc5Ny4uYjQ1YmUzYWQ1MDI3OTE1MGI3
OTI0M2EwNGZmYmVjMTFmOTMxZjk4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03MSw2
ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IE9wUHV0QnlWYWw7CiAgICAg
c3RydWN0IE9wUHV0QnlWYWxEaXJlY3Q7CisgICAgc3RydWN0IE9wUHV0UHJpdmF0ZU5hbWU7CiAg
ICAgc3RydWN0IE9wUHV0VG9TY29wZTsKIAogICAgIHN0cnVjdCBDYWxsUmVjb3JkIHsKQEAgLTE2
MSw2ICsxNjIsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisg
ICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdElu
ZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJnZXQsIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgICAgIDogYnlWYWxJbmZvKGJ5VmFs
SW5mbykKKyAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorICAgICAg
ICAgICAgLCBub3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQorICAgICAgICAgICAgLCBkb25lVGFy
Z2V0KGRvbmVUYXJnZXQpCisgICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5leHRIb3RQ
YXRoVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBCeVZhbEluZm8qIGJ5
VmFsSW5mbzsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4OwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXA7CkBAIC0yMzQsNiArMjQ0
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQ8T3A+KGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHV0S2luZCwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWNo
ZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgSklU
IGppdCh2bSwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlSW5kZXggPSBi
eVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQ
dXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlSGFzSW5k
ZXhlZFByb3BlcnR5KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJh
eU1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CkBA
IC0yNTksNiArMjc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQo
QnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmll
cik7CiAKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hl
ZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIENhY2hlYWJsZUlkZW50aWZpZXIpOwor
CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAogICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpOwpAQCAtNDA2LDExICs0MjUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8g
RGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29k
ZS4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVs
ZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZChPcCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmll
ciBjaGVjayBoZWxwZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBl
bWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0
Y2gsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCisgICAgICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0
UHJpdmF0ZU5hbWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1
bXBMaXN0JiBzbG93Q2FzZXMpOworCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAg
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCwgUHV0
S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3Qm
IHNsb3dDYXNlcyk7CiAKQEAgLTYwNSw2ICs2MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVtaXRf
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7
CkBAIC02ODYsNiArNzA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBhZTYxZDkxODVmZWM3
NWJlZWVlYTFkYzQzYmI2YTQ3MWYyYmQ3Y2U3Li4zOGUxOGRiZjFlYTA1Yjk0NzdlMThkODZhOWNk
ZjZjZTIzZDI0YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTM1LDExICsxMzUsMTAgQEAgdm9pZCBKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsCiAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoLCAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUgZWNt
YU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKICAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVy
cywgYmFzZSwgdmFsdWUpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAg
LCBtX3B1dEtpbmQocHV0S2luZCkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQo
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJz
LmNsZWFyKHNjcmF0Y2gpOwogfQpAQCAtMTUxLDEyICsxNTAsMTQgQEAgdm9pZCBKSVRQdXRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklU
T3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigp
CiB7Ci0gICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpOb25lKSB7Ci0gICAgICAgIEFTU0VSVChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKKyAg
ICBpZiAobV9wdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFNldCkgewogICAgICAgICBBU1NF
UlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKLSAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCi0gICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwot
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplOworICAgIH0KKworICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkRGVmaW5lKSB7CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOworICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplOwogICAgIH0KIAogICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRl
eCAyOWMyZDJlNmQzMjhkYTljYjM3NjExNWQ5OTJlYTJhMmM1MGM1OTk0Li44NTM4MzVhMzkzNTg1
MjkxMjdkZTJmMzk3YjQ5Nzk5ODI0ZTM2ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUg
IlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEzMCwx
MSBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Ig
ewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1v
ZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFj
Y2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1v
ZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0Myw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
RUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKIH07CiAKIGNsYXNzIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMmY3NmRiMDA2OTIxMThhZjg1
MmU3MDYyOTUwMjc0Mjk5ODVhY2ZiMi4uZDhlNWRhMTJhMzBjYzYyOTlkMTBiMzExZjNlZGM4MDVk
NGZjNTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5OSwy
MSArNjk5LDkgQEAgQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJ
ZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2Rl
IEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FM
V0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1
dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQoT3ApCi17Ci0gICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmU7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQ
dXRCeVZhbERpcmVjdCBvcCkKLXsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFiNzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li5lMjZhMDE5
YTQxMWVjMTFhNDliZjgzZTQ0MWViMmRmYzVkNjZlMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTc3MCwxMSArNzcwLDExIEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNz
VHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwog
CiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywg
b2xkU3RydWN0dXJlLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICAg
ICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0
LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJp
dmF0ZUZpZWxkRGVmaW5lKTsKICAgICB9KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3Ry
aWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1
dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRl
bnRpZmllciwgdmFsdWUpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlk
ZW50aWZpZXIpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KgogICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5
cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAog
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9s
ZFN0cnVjdHVyZSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFB1dCk7CisgICAgICAgICAg
ICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xk
U3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVG
aWVsZFNldCk7CiAgICAgfSk7CiB9CiAKQEAgLTExMTksNiArMTExOSwxMzEgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3Qo
YmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGltaXphdGlv
blJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOworCisgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRl
bnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAgICAgICBBU1NFUlQoc3Vic2NyaXB0LmlzU3lt
Ym9sKCkpOworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0
ZWNvZGVJbmRleCgwKSk7CisgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7
CisgICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKKyAgICAgICAgICAgIGlmIChieVZhbElu
Zm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgIEpJ
VDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKHZtLCBjb2RlQmxvY2ssIGJ5VmFs
SW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBieVZhbEluZm8tPmNh
Y2hlZElkKTsKKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRp
b25SZXN1bHQ6Ok9wdGltaXplZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gU2VlbSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGJ5
VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChz
dWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9
IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXph
dGlvblJlc3VsdDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRp
b25SZXN1bHQ6OlNlZW5PbmNlKSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1v
cmUgdGhhbiAxMCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAg
ICAgIC8vIG5ldmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJh
dGlvbnMgd29ydGggb2Ygb3Bwb3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUg
dGhhdCB0aGUgcHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8v
IFdlIGNvdW50IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4K
KyAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAg
ICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAg
fQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6Okdp
dmVVcCkgeworICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAg
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBwdXRLaW5k
LmlzRGVmaW5lKCkgPyAgb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0
aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7
CisgICAgCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGlu
IGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlz
IGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAg
IGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5pc0Rl
ZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VP
YmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZh
dGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3Bl
CisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAg
IGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQor
ICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVl
KTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2Ny
aXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2Jh
bE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisg
ICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUg
YWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0
aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1v
ZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Cisg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBi
YXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAgIGJ5VmFsSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IDY1ZTcxMjU5NTY4MzBhODgzZTgzMzMwNzk1MzllMjA0NDJjMDVkOTQuLjFjYzg5YzM3MmI2
ZDFkMjAyOWEwMzI0NjI3MTJiZjdiNjEzZTlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0
S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0x
OTEsMTMgKzE5MiwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dQogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QpIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0
UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7
CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwg
RUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZp
bmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVkMTcxOWE0NzM4OTI4YTBm
MmM2MWJlM2UyZGRkNDc0M2EuLmIxYWJmMjc3MTAyZDQ2MmU1YzU4YjFhNTI3MWE2ZGZmNmU0OTQz
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1
ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEu
aD4KQEAgLTMxNiw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5
VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIg
aWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVC
YXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC0z
NDYsNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owog
ICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gSklU
OjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21h
TW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3MCw0NyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+
YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBy
ZWdUMSk7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgp
OworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJlbCBkb25lID0g
bGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENv
bXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRv
bmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZv
ID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJ
bmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2lu
ZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBs
YWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKKyAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVl
KCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5m
b1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9i
eVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRl
cl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlJZD4oKTsK
QEAgLTcwMCw3ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAg
ICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAt
MTM1OCw3ICsxNDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1Qx
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0
ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKIApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwK
IAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSBieXRlY29kZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1
bXBMaXN0JiBzbG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRL
aW5kLmlzRGVmaW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJlY3RQcml2YXRl
RmllbGRTZXQ7CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChieXRlY29kZSwg
cHV0S2luZCwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Cit9CisKIHZvaWQg
SklUOjplbWl0V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgV3JpdGVCYXJyaWVy
TW9kZSBtb2RlKQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYsNiArMTUxNCw0MCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlWYWw8T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZv
KiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAK
K3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJs
ZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZv
LT5ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2Vz
OworICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
ID0gZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUs
IGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9jb2RlQmxvY2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywg
bV9jb2RlQmxvY2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8t
PnNsb3dQYXRoVGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJ
bmZvLT5kb25lVGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisg
ICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhj
ZXB0aW9uSGFuZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxs
cykgeworICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4u
ZmluYWxpemUocGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywg
cGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0
X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMs
IHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9D
U3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAg
IGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1dG8gZ2VuZXJp
Y0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25EZWZp
bmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVyaWM7CisK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRh
Zz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGdlbmVyaWNG
dW5jdGlvbikpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUzMTNiMmFmMzA4
MWViMGY1YzFlYTRjMzA1NzQ4Li5mMTVjMGQwMTYwMzBkZjU0ZjNjNWRiYjQ4ZTQwMDc5OWJjOWI5
NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmUKIH0KIAogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2Rl
QmxvY2stPmFkZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1pdExvYWQyKGJh
c2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAgICBQYXRjaGFi
bGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZh
c3RQYXRoSm1wKTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywg
bV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5h
bWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAg
VmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4
XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUu
bV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93
UGF0aCA9IGxhYmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDAp
OworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQoYmFzZSwgYmFz
ZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQocHJv
cGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVk
SW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21f
YnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJl
c3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1
cnJlbnRJbnN0cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJl
Z1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAg
ICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRl
eCA2YWEyNjA2YWE5ZGI1Y2JiOWQ2NzI4MzI5YTkxZWNhYTRmZjQ0MzE4Li45MjkwY2JjOGY1YWFj
ZmZmMmFkZDQ4NWRhODc1MTAyYWU3OWRjYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKQEAgLTUzNSwzNCArNTM1LDQ4IEBAIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAK
IHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQ
cm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3QpCiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsK
LSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0S2luZCkgewor
ICAgIGNhc2UgTm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxk
Q3JlYXRlKQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRl
RmllbGRTdHJpY3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1
dCkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0OwotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAg
ICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNT
dHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZh
dGVGaWVsZFN0cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAg
QVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdDsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9
CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25z
dCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKIHsKLSAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkgewotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNo
IChwdXRLaW5kKSB7CisgICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRp
bWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsK
KyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAg
ICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
OwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
OwotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0K
LSAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAg
ICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGNhc2UgRGly
ZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7
CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0
aW1pemU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVy
dHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2lu
ZCkKQEAgLTYwOSw2ICs2MjMsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQ
dXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlz
UHJveHkgJiYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0g
RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOworCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAg
ICAgICAgIGlmIChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1
dCgpKSB7CkBAIC02NzAsNyArNjg3LDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlw
ZUFjY2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
IGNvbmRpdGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xv
YmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Y2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKQEAgLTY4OCw3ICs3MDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQ
dXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgaWYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBj
b25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1MjEsOCArMTUz
Nyw4IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9u
ID09IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1p
emVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAg
ZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1
dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9
IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBlbHNl
IGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmll
bGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3Bl
cmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYg
KHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVs
ZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQ
cml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBv
cGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCmluZGV4IGY2MTBjMTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3NDZiZDQyODQx
M2YuLmM4YzI2MTUyNDNhZDhjMGE2ZGVkZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CkBAIC01OSw5ICs1OSw5IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJN
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFi
bGUuaCIKLSNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQ
dXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQdXRCeVZh
bEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hp
Y2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWlu
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApp
bmRleCBkNGQwOTE2ZmYyZDc2MTQ0MDQzYTM5NWQzZThhODE4MzA3MjAxNDZhLi43OTc3N2EyOWZl
MDZlNmJhYzk3MGY1MzRiM2RiMTI4MjM5YmJkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExNzcsNDggKzExNzcsMTI3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBi
eXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0
ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOwor
ICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwog
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50
MzJJbmRleCgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFs
dWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJl
Y3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCi0g
ICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRl
RmllbGRBY2Nlc3MpOwotICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3Jp
cHQuYXNEb3VibGUoKTsKLSAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwotICAgICAgICBpZiAoc3Vic2Ny
aXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJ
bnQzMikpIHsKLSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJl
Y3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Ci0gICAg
ICAgICAgICBMTElOVF9FTkQoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIERvbid0IHB1
dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8g
cHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7
CiAKLSAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxk
QWNjZXNzKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsK
LSAgICAgICAgaWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYg
KGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBi
YXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0g
ICAgICAgICAgICBMTElOVF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25T
bG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0
LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRl
TmFtZT4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
ayk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0Nl
bGwoKS0+c3RydWN0dXJlKHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBj
YW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFu
ZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29s
IGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1v
ZGUpOworICAgIGlmIChieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFz
ZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5p
c1NldCgpKTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBi
YXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAg
ICAgICYmIHN1YnNjcmlwdC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUq
IGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKTsKKyAgICAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsK
KworICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90
byhhLCBiKSkgeworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5
UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVj
dGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5y
YXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0
cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0
YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1f
cHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFz
ZUNlbGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJl
LT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNl
KCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5l
d1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFu
ZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVy
ZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3Rv
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6
ZVByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFp
biAmJiAhc2F3UG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJ
RCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IFRoaXMgYXNzZXJ0IGhlbHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0
byBkaXNhYmxlIGNhY2hpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24g
dGhlbiBzdG9yZSB0byBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcK
KyAgICAgICAgICAgICAgICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYg
d2UgcmVpZnkgYSBsYXp5IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0
byBkaXNhYmxlIGNhY2hpbmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFj
ZSBJQyBkb2VzIG5vdAorICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNl
IHR5cGVzIG9mIHN0cnVjdHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAg
ICAgICAgICAgIC8vIHRyYW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICBuZXdTdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xv
dC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQo
KTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwg
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2
YzMwOGQ5ZjNkZGUyNWI5ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4Nzgx
ZTE4Y2JmZTgzM2YzYTljMWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4
IGViZDM2YmFjZWRkNGUwMzgxNDAxNjI5Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIx
MjBkM2M2MWNlZjc5OTYxYTJhMDkwMDFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiAr
NjE0LDEzIEBAIG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2Fk
QWZ0ZXJTbG93UGF0aCkKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9u
T3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNs
b3dQYXRoKQorICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQor
ICAgIHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgp
Cisud3JpdGVCYXJyaWVyRG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQo
c2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53
cml0ZUJhcnJpZXJEb25lKQpAQCAtMTY5Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1
dF9wcml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwg
Z2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRl
TmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRh
ZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQ
cml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0
MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6
CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUg
SUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90
VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisg
ICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFj
cm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0
YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9i
YXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEs
IENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXRO
b3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAs
IHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRl
TmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZh
dGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0
ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRh
KG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNmZlMTczMDc4Y2FjM2MxY2MxOTE0
ODA2MzZkMjc3ZWJiZmFhMzU0My4uZmFmZjc0MjNmYTE1NWNhNTI4Yzc1ZDhjNDlhNmZmYzRiMzhh
OGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpcwogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9w
dXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykK
KyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQy
KQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlE
W3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0
UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNs
b3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBi
YXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRh
dGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVy
ZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9y
ZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJh
bmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9h
ZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBS
ZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRy
YW5zaXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hp
Y2ggaG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1l
dGFkYXRhOjptX29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9i
YXNlLCBtX3ZhbHVlKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93Ogor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAg
ZGlzcGF0Y2goKQorZW5kKQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5h
bWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQogICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1
dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0
S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzZTkxYmZmM2NhMDcyZDJkMzc5MDZmOWU2
Y2I2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
aXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykg
MjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1NldCgpKQorICAg
ICAgICBvdXQucHJpbnQoIlNldCIpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCJEZWZp
bmUiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2Ez
MDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsx
LDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVh
bTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZp
bmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRL
aW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChi
eXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkg
eyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5k
KFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5l
KCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBT
ZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFt
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQo
dWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERl
ZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDM5MjU0MmY5MmU1ZjdhYjAyYWJjN2E3ZDNjMTg5NDY2YjdkNGRlMGEu
LmQyZDA2ODI4MGI0MTNlNDk0MDQ3YTNhZjExNjFkNGRlMjM4ZmRjNmIgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMjAtMDktMDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAg
IFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVs
ZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBh
dm9pZCBleGVjdXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVs
ZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2
YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFy
a3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1i
eS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUt
bmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1
cmUtdHJhc2l0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnkt
b2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5l
cmljLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlk
LWRlZmluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52
YWxpZC1zdG9yZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
aW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFu
dC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdp
dGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanM6IEFkZGVkLgorCiAyMDIwLTA5LTAyICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3Qy
NjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2
YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWM2YzhjNDliZGVkMmUyYmNiMzc2NzdmNDY1NDE1NTFiODZkNTU2Mgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1w
cml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjYgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisg
ICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKKyAgICB9
Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7
CitjMS5mb28gPSAwOworCitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0IGMz
ID0gbmV3IEMoKTsKK2MzLmJheiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVuZ3Ro
XS5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMjYyOGQzODhiYjA1MGI2MmU2NTk4YmY3YzgzYWZhNDg4NjA4NTI5Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUv
cHV0LXByaXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwxNiBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDAwMDAwOyBpKyspIHsKKyAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYTMyZmNmYzU1NGU0OGVmNDc1Mzc3MWMzOTVmYjJlZThlYTY1ZTk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1
YmxpYy1maWVsZC5qcwpAQCAtMCwwICsxLDI0IEBACitjbGFzcyBDIHsKKyAgICBmaWVsZDsKKwor
ICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2YWx1ZTsKKyAgICB9
Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7
CitjMS5mb28gPSAwOworCitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0IGMz
ID0gbmV3IEMoKTsKK2MzLmJheiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVuZ3Ro
XS5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cHV0LXB1YmxpYy1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMt
ZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZmY2NlMmVmNjQxNjQ4M2U2MjI3M2M4ZjUwNDVlYjQ0MTY4
NWU3NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJs
aWMtZmllbGQuanMKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQyB7CisgICAgZmllbGQ7CisKKyAg
ICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLmZpZWxkID0gdmFsdWU7CisgICAgfQor
fQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citm
b3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGMuc2V0RmllbGQoaSk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1i
YXJyaWVyLWluc2VydGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1l
LWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNWU2MzA1NTc4ZGVmNjhi
NGUyNmZmZjhlNzFjZjllMGI5NDhmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpAQCAtMCww
ICsxLDY5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uKGEsIGUpIHsKKyAgICAgICAgaWYgKGEgIT09IGUpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0s
CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0
IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOwor
ICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUg
aW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAi
ICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0
aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30K
KworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKwor
ICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAg
ICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAg
ICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAg
ICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAg
ICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0Rmll
bGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RG
RyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisK
K2xldCBvbGRPYmplY3QgPSBuZXcgQzsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGlm
IChpIDwgNTAwMCkgeworICAgICAgICBsZXQgYyA9IG5ldyBDOworICAgICAgICBjLnNldEZpZWxk
KGkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpID09IDUwMDApCisgICAgICAgICAgICBn
YygpOworICAgICAgICBvbGRPYmplY3Quc2V0RmllbGQoe3Byb3A6IGl9KTsKKyAgICAgICAgZWRl
bkdDKCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUob2xkT2JqZWN0LmdldEZpZWxkKCkucHJv
cCwgaSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXBy
aXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJl
c3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kY2VjOGFkYmM0ODE0YTM2MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGls
ZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpAQCAtMCwwICsxLDU0IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rv
cikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAi
IGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0
aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0
aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9
IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAi
cDIiLCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhp
c1trZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNb
InAxIl0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRo
aXNbInAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9
Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGxldCBjID0gbmV3IEM7CisgICAgaWYgKGkgPiA1MDAwKSB7CisgICAgICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGMuc2V0
RmllbGQuY2FsbCh7fSk7CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBjLnNldEZp
ZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUt
bmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1ieS1p
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kY2VjOGFkYmM0ODE0YTM2MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUt
Y29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpAQCAtMCwwICsxLDU0IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdM
aXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2Vw
dGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0
aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdp
dGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgewor
ICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFy
ciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsK
KyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAg
ICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAg
ICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdjsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2ZvciAo
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEM7CisgICAgaWYgKGkgPiA1MDAw
KSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGMuc2V0RmllbGQuY2FsbCh7fSk7CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAg
ICAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10cmFzaXRpb24uanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0
cnVjdHVyZS10cmFzaXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkNmU0NTM2NGIwMmI0MzU1NGVkMzYy
ZDRhYThkZTEwYmM0N2ZhOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcwpA
QCAtMCwwICsxLDUwIEBACisvL0ByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGll
cnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5s
aW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhj
ZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1
Y3RvcigpIHsKKyAgICByZXR1cm4ge307CisgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2Ug
eworICAgICNmaWVsZCA9IDA7CisKKyAgICBnZXRGaWVsZChjaGFuZ2VSZWNpZXZlcikgeworICAg
ICAgICBsZXQgciA9IHRoaXM7CisgICAgICAgIGlmIChjaGFuZ2VSZWNpZXZlcikgeworICAgICAg
ICAgICAgciA9IHt9OworICAgICAgICB9CisKKyAgICAgICAgci4jZmllbGQgPSAnYmFyJzsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMo
KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGlmIChpIDwgOTAwMCkK
KyAgICAgICAgQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChjLCBmYWxzZSk7CisgICAgZWxzZSB7
CisgICAgICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMsIHRydWUpOworICAgICAgICB9KTsKKyAg
ICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29u
c3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIwMmZhYTg5MWFlNDE0MDFlZWFjZmRhZWQ4MzVmNGU0MmRmNGU1ZTQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50
LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsNTcgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZz1mYWxz
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgewor
ICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVyYXRpb25zID0g
MTAwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZhbHNlOworbGV0IGNvbnN0cnVjdERp
ZmZlcmVudCA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisK
KyAgICBpbml0KCkgeworICAgICAgICBpZiAoY29uc3RydWN0RGlmZmVyZW50KQorICAgICAgICAg
ICAgdGhpcy5mb28gPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtZXRob2Qo
aiwgb3RoZXIpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBsZXQgb2JqID0gdGhpczsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwgaXRlcmF0
aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAgICBpZiAoaiAlIDIpIHsKKyAgICAg
ICAgICAgIG90aGVyLmZvbyA9IGo7CisgICAgICAgICAgICBvYmogPSBvdGhlcjsKKyAgICAgICAg
fQorICAgICAgICBvYmouI2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
Lm1ldGhvZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBvdGhl
ckMgPSBuZXcgQygpOworCitjb25zdHJ1Y3REaWZmZXJlbnQgPSB0cnVlOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDMwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2Qo
aSwgb3RoZXJDKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisK
K3RyaWdnZXJDb21waWxhdGlvbiA9IHRydWUKK2xldCBjID0gbmV3IEMoKTsKK2MubWV0aG9kKDAs
IG90aGVyQyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9ucyk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9s
ZGluZy10by1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcyMGVj
ODA0YTk0ZjcxZTM1OGVhN2FhZTZhNmZlOGRlZTI1ODU1MgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnkt
b2Zmc2V0LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0t
dXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQor
fQorCitsZXQgaXRlcmF0aW9ucyA9IDEwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZh
bHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9u
ICYmIGkgPCBpdGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7CisgICAgICAgIHRoaXMu
I2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25v
REZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
KworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAg
IGMubWV0aG9kKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDApOworfQor
Cit0cmlnZ2VyQ29tcGlsYXRpb24gPSB0cnVlCitjLm1ldGhvZCgpOworYXNzZXJ0LnNhbWVWYWx1
ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ2YzI5OWM2NjI3MGJhYmNhM2QwMDdiN2E3
ODMwOTc3Mjc5NGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkg
eworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNz
RGVjbGFyYXRpb24oZHluYW1pY1Byb3BlcnR5KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNm
aWVsZCA9IHRoaXMuaW5pdCgpOworICAgIAorICAgICAgICBpbml0KCkgeworICAgICAgICAgICAg
dGhpc1tkeW5hbWljUHJvcGVydHldID0gZHluYW1pY1Byb3BlcnR5OworICAgICAgICB9CisKKyAg
ICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAg
ICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAg
ICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQ2xhc3MgPSBjbGFzc0RlY2xhcmF0aW9u
KCdwcm9wZXJ0eScgKyBpKTsKKyAgICBsZXQgYyA9IG5ldyBDbGFzcygpOworICAgIGMuc2V0Rmll
bGQoJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsK
K30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlk
LWRlZmluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZp
bmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTk1OThlNzAxOWQzNzRkNjBhYTlkN2NkYTljZjU0MmI3MTY3ZjNi
NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52
YWxpZC1kZWZpbmUuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rp
b24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9u
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhl
Y3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRPdmVycmlk
ZVJldHVybiA9IGZhbHNlOworbGV0IG9iajsKKworY2xhc3MgQiB7CisgICAgY29uc3RydWN0b3Io
KSB7CisgICAgICAgIGlmIChzaG91bGRPdmVycmlkZVJldHVybikKKyAgICAgICAgICAgIHJldHVy
biBvYmo7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRz
IEIgeworICAjZmllbGQgPSAndGVzdCc7CisKKyAgZ2V0RmllbGQoKSB7CisgICAgICByZXR1cm4g
dGhpcy4jZmllbGQ7CisgIH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAgICBzaG91bGRPdmVycmlkZVJldHVybiA9IHRy
dWU7CisgICAgICBvYmogPSB7fTsKKyAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgIGFzc2Vy
dC5zYW1lVmFsdWUoQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChvYmopLCAndGVzdCcpOworICAg
ICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICAgIG5ldyBD
KCk7CisgICAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICAgIGxldCBvYmogPSB7fTsKKyAgICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVz
dCcpOworICAgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAg
ICAgIGMuZ2V0RmllbGQuY2FsbChvYmopOworICAgICAgfSk7CisgIH0KK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MzQ3Y2VhNjAwMDVhOWI1Zjg2OGEwYjUzYmYyMWQ3NWMyNGZiYjA4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCkBAIC0w
LDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9
dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiAr
IGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rv
cikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAi
IGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0
aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0
aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVuY3Rpb24g
Zm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAjZm9v
OworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAgdGhpcy4j
Zm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lubGluZShm
b28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAw
KSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9IGVsc2UgeworICAgIGZv
bygpOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMzMTRmYTllNzA0OWYxYjgwYjAyZmMwYTcxOTU0N2U3YTIx
ZGI5MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
aW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDY5
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93
czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
I2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAg
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFj
dG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOworCits
ZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKK2MyLnNldEZpZWxkKCdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwg
J2ZvbycpOworCitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgYy5zZXRGaWVsZC5jYWxsKGMyLCAndGVzdCcpOworfSk7CisKK2Fzc2VydC50
aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYzIuc2V0RmllbGQuY2FsbChjLCAndGVzdCcp
OworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3Ny
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1vc3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTE2OTVhMWFkZTM3NjljNjE0ZGRjOTMwMTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtb3NyLmpzCkBAIC0wLDAgKzEsNDAg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAg
IH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQo
KTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisgICAgICAgICAgICB0
aGlzLnByb3BlcnR5ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRG
aWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5l
KEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsK
K25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQo
J2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBp
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5
bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2NmYzUzNjRjYTllMDJjZTk1MjNiYWM0MTVjMTgwMTQ2ZTE1Njg5ZAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNz
IEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAg
aWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgICAgICBy
ZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4j
ZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9J
bmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQp
Oworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5
bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhMzI5N2JlZDgyZDdjMGM3ZTUyZDU1YTc1ZTVhYzIxMTgx
YjdjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEs
IGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitjbGFzcyBDIHsK
KyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMu
I2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25v
SW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlm
aWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1p
ZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMzdkODE3ZWRlMTRhMjAzNWYzNWE2ODhiYTQxNWRh
MTVmZDM3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitm
dW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmll
bGQ7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90
b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAg
ICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsK
K2xldCBDMSA9IGNsYXNzRGVjbGFyYXRpb24oKTsKK2xldCBDMiA9IGNsYXNzRGVjbGFyYXRpb24o
KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBpICUg
MiA/IG5ldyBDMSA6IG5ldyBDMjsKKyAgICBjLnNldEZpZWxkKCd0ZXN0JyArIGkpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcgKyBpKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409045</attachid>
            <date>2020-09-17 09:51:22 -0700</date>
            <delta_ts>2020-09-17 11:51:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200917135114.patch</filename>
            <type>text/plain</type>
            <size>167814</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li5mMDZkMWU2OGU0OGE2ODEy
MzIwYzdjOWVkNGQwOTNmNjI0YTVhYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMjAtMDktMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAgICAq
IGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2
YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVG
aWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAg
ICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJp
emUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjp0cnlGb2xkQXNQdXRCeU9mZnNldCk6
CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dD
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2
YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVB1dFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAo
SlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6
SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6
OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0UHJpdmF0
ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAg
IChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcml2
YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQ
cml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVs
ZFB1dEtpbmQ6Om5vbmUpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUpOgorICAgICAgICAo
SlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc05vbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpQ
cml2YXRlRmllbGRQdXRLaW5kOjppc1NldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6OmlzRGVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5k
OjpQcml2YXRlRmllbGRQdXRLaW5kKToKKwogMjAyMC0wOS0wMiAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiB2YWx1ZS5pc0Nl
bGwoKSAmJiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEN1c3RvbUdldHRlclNldHRlclR5cGUg
Li9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MzE1OWFmYjg1ODRkODk0MGVkNWQ1YjNmMjdhMzQ0M2U4
ZjA4ZDMyLi44MDBkZWY0YWE5ZWMyNjk3YTUwNDFiODBkZjA4ZTcxMDg2MjM1MjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDcsNyArNTQ3LDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5k
cy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmgKQEAgLTk3MSw2ICs5NzAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGlt
ZS9PcHRpb25zTGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM2ODk1NWYyMmRlMmYyNjI3ODZlN2U2ODEz
YTI0MDhiODg3ZTg5ZGYuLjcwY2Q3MzU5ZmNlODU1ZjUwMTJiZmQxOGU4NTk5OTQ5ZDQ2MjcxOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4
NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3
NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEyNjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
REQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0Mg
LyogQVJNdjdSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNDE1Miw4ICs0MTUyLDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBh
cnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRC
ODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIx
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MTczLDYgKzQxNzEsOCBAQAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTRE
MjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmll
bGRQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzYyMiw2ICs3NjIyLDggQEAKIAkJCQkzN0M3MzhEMTFFREI1Njcy
MDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQw
MTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50Lmgg
Ki8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQu
Y3BwICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRL
aW5kLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
Ki8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
aCAqLywKQEAgLTg0OTMsOCArODQ5NSw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyog
UHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRC
eVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmgg
Ki8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3Bw
ICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmgg
Ki8sCkBAIC0xMDIyOSw2ICsxMDIyOSw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIw
IC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5
REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRE
NTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI2OSw3ICsx
MDI3MCw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2
MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlZDNhOGQxYjUxNDM3YjVkYWRjZDI5
NWY3MzJjMGQ5YTMzZmQwNDZlLi40NTVjYmI5NDBjMTI1ODdjNDhjOGJhY2M0NTdkMWZlYTJlN2Vl
OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
LWJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNw
cAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcApAQCAtOTQzLDYgKzk0Miw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09w
dGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAK
K3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwCiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURl
c2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAyYWY5NzU3NzMyMzlkZDA4ZDQ5MzQzNzZiMjBiNjMyM2RkNGJlNWMxLi40
MWFkN2Y0Yjc0YWQ3MjU1ZGQ1MTYwYWM3N2JiNmM4MDNhM2U5YzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ2LDEwICs0NiwxMCBA
QCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAogICAgIDpSZXN1bHRUeXBlLAogICAg
IDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVsZFB1dEtpbmQsCiAgICAgOlByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKICAgICA6UHV0QnlJZEZsYWdz
LAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlwZSwKICAgICA6U3RydWN0dXJl
LAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3NCw2ICs1NzQsMjAgQEAgb3AgOmdldF9wcml2YXRl
X25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKICAgICB9CiAK
K29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwdXRLaW5kOiBQcml2YXRlRmllbGRQdXRL
aW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAg
ICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLApAQCAtNTk5LDcgKzYxMyw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVj
dCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBm
bGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApp
bmRleCAyOWU3YTEzZWY3YjFkNjA1ZTk4MWE2YmVlYTQwODk3NmIyMmNlYjg3Li40NjBlOTczMDE2
NjkzYjEyNDQ1ZTQxYjJmODI5YTZhNWY2Zjc2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyNyw2ICsyMjcsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
UmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1l
LCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5
KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhP
cFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpCiAgICAgVVNFUyhPcEluQnlW
YWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVl
LCBwcm90b3R5cGUpCkBAIC0zOTUsNiArMzk2LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUK
ICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVf
bmFtZToKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmlu
ZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2NzJl
ZTdiZjA1ZWExYWY5ODgzNzRiNTY3MWY4Y2Q2OGM2MjZlMWZhLi5kZWViZDk5ZjFkNjE4OWVhZjJm
NzMxMzEyMzQyMDQzN2JhYWJjYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcApAQCAtNTQyLDYgKzU0Miw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5
V2l0aFNpemUpCkBAIC0xMTM2LDYgKzExMzcsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMK
ICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1
dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdT
dHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAg
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAg
ICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzAyLDYgKzEzMjIsMjIgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0
ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IDM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMuLmUwNWEyNTY0OGEx
M2IwNTk3MmY2NjRjMzdkZTA4Y2QzYzg5NDk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU4LDQ2ICsyNTgsNiBAQCBz
dHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTxP
cGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7Ci0gICAg
dXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlw
ZTsKLQotICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVt
LCBlbmNvZGVkIGFzOgotICAgIC8vICAgICAgICAgIGlzU3RyaWN0Ci0gICAgLy8gICAgICAgICAg
ICAgdgotICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0Ci0gICAgLy8gICAgICAgICAg
IF4KLSAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwg
MiA9IENyZWF0ZSB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9IDI7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKLQot
ICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCi0gICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFs
RmxhZ3MgZmxhZ3MpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOwotICAgICAgICBh
dXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5w
cml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOwotICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8
IDEpIHwgaXNEaXJlY3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVy
dChUYXJnZXRUeXBlIGdwaSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNf
Y2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9
IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOwotICAgICAgICBhdXRvIGFj
Y2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7
Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lID8KLSAgICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9k
ZSkgOgotICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUpOwotICAgIH0KLX07Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNp
emUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+
Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEU+LCBzaXplPjsKQEAgLTQyNyw0ICszODcsMjQgQEAgc3RydWN0IEZpdHM8RUNNQU1v
ZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFByaXZhdGVGaWVsZFB1dEtpbmQs
IHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBG
aXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHJpdmF0ZUZpZWxk
UHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKHB1dE1v
ZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgY29udmVydChQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQmFzZTo6Y29udmVydChwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBQcml2YXRlRmllbGRQdXRLaW5kIGNvbnZlcnQodHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBw
dXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21C
eXRlKEJhc2U6OmNvbnZlcnQocHV0TW9kZSkpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IDRmMzk0ZjAxZDA1YjMwZjQ4NTlkNWE0NTJhNTc3YzRkMmVjNTFmOGEuLjhiYzE3
Yzg2NDZiYzcwYmRiZTRmYmVmOWE2OTdjOGM5ZmI1ODZiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTQ4LDYgKzQ4LDEyIEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlCiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0o
KTsKICAgICAKICAgICBhdXRvIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CisKKyAgICAvLyBXZSBhcmUgbm90IHll
dCB1c2luZyBgY29tcHV0ZUZyb21MTEludGAgaW4gYW55IHBsYWNlIGZvciBgcHV0X3ByaXZhdGVf
bmFtZWAuCisgICAgLy8gV2UgY2FuIGFkZCBzdXBwb3J0IGZvciBpdCBpZiB0aGlzIGlzIHJlcXVp
cmVkIGluIGZ1dHVyZSBjaGFuZ2VzLCBzaW5jZSB3ZSBoYXZlCisgICAgLy8gSUMgaW1wbGVtZW50
ZWQgZm9yIHRoaXMgb3BlcmF0aW9uIG9uIExMSW50LgorICAgIEFTU0VSVCghaW5zdHJ1Y3Rpb24t
PmlzPE9wUHV0UHJpdmF0ZU5hbWU+KCkpOworCiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0
aW9uLT5hczxPcFB1dEJ5SWQ+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShwcm9maWxlZEJsb2NrKTsKIApAQCAtMjcxLDcgKzI3Nyw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVN
YXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAK
LVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgYm9vbCBpc0RpcmVjdCkKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNl
dCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIGlmIChwYXJzZUluZGV4KCp1aWQpKQog
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKQEAgLTI5NCw2ICsz
MDAsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnUKICAgICAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zm
c2V0KSkgeworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgaGF2ZSBhIHZhbGlkIG9mZnNldCBmb3Ig
c3RydWN0dXJlcyBvbiBgUHV0UHJpdmF0ZU5hbWVCeUlkYCBkZWZpbmUgbW9kZQorICAgICAgICAg
ICAgLy8gc2luY2UgaXQgbWVhbnMgd2UgYXJlIHJlZGVmaW5pbmcgYSBwcml2YXRlIGZpZWxkLiBJ
biBzdWNoIGNhc2UsIHdlIG5lZWQgdG8gdGFrZSAKKyAgICAgICAgICAgIC8vIHNsb3cgcGF0aCB0
byB0aHJvdyBleGNlcHRpb24uCisgICAgICAgICAgICBpZiAocHJpdmF0ZUZpZWxkUHV0S2luZC5p
c0RlZmluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOworCiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTWFrZXNDYWxscyk7CiAKQEAgLTMxNiw3ICszMjgsMTQgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cnUKICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgCisKKyAgICAgICAg
Ly8gV2UgY2FuIGhhdmUgYSBjYXNlIHdpdGggUHV0UHJpdmF0ZU5hbWVCeUlkIGluIHNldCBtb2Rl
IGFuZCBpdAorICAgICAgICAvLyBzaG91bGQgbmV2ZXIgY2F1c2UgYSBzdHJ1Y3R1cmUgdHJhbnNp
dGlvbiBiZWNhdXNlIGl0IG1lYW5zIHdlIGFyZQorICAgICAgICAvLyB0cnlpbmcgdG8gc3RvcmUg
aW4gYSBub3QgaW5zdGFsbGVkIHByaXZhdGUgZmllbGQuIFdlIG5lZWQgdG8gdGFrZQorICAgICAg
ICAvLyBzbG93IHBhdGggdG8gdGhyb3cgZXhjcGV0aW9uIGlmIGl0IGV2ZXIgZ2V0cyBleGVjdXRl
ZC4KKyAgICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBo
eXBvdGhlc2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJv
dmUgdGhhdCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNv
bWUgc2FuaXR5IGNoZWNrcy4KICAgICAKQEAgLTMzMSw2ICszNTAsNyBAQCBQdXRCeUlkU3RhdHVz
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RydQogICAgIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25k
aXRpb25TZXQ7CiAgICAgICAgIGlmICghaXNEaXJlY3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChw
cml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9
IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKICAg
ICAgICAgICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVpZCk7CiAgICAgICAg
ICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAppbmRleCA0ZGRmZmJiODhjODAzNzFmODY4M2U1
NzNmMmJmZWNkNzM5MTdmZGE5Li5mODcyZDRjZTJmNjFjY2NmMzljYzhmYzQzZDgzMzcwOWM5M2Vi
OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1
ZGUgIkV4aXRGbGFnLmgiCiAjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRl
ICJTdHViSW5mb1N1bW1hcnkuaCIKIApAQCAtOTQsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNT
dGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0Rmxh
ZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSk7Ci0gICAgc3RhdGljIFB1dEJ5SWRTdGF0
dXMgY29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpOworICAgIHN0YXRpYyBQdXRCeUlkU3Rh
dHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kKTsK
ICAgICAKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFz
ZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2
NTYzYjA1ZjY0MGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8
d3RmL0NvbW1hUHJpbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcg
bmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1
dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAg
aWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIp
OwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxk
QWRkKCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFi
MzZjNjFjZTMwMmJmOWMyMzgyNTZhNzA1Njg3NjY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2RlLmgiCi0jaW5j
bHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBjbGFz
cyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBQdXQs
Ci0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJsaWM6Ci0gICAg
Y29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7Ci0g
ICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhl
IHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90eXBlIGNoYWlu
IGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRl
RGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFs
RmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0
QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5
VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0
LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0KLSAgICBi
b29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAgICBib29sIGlz
UHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25zdGV4cHIg
UHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAg
OiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBt
X2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2Vz
cykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBi
b29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5k
ZXggZjkwZDUyOWQyYWViYjNjZDk1YzhiNDU3YjY0OGI1Zjc0YjhmYjEzYS4uMjAyZjdjMzM5ODE4
MTFhZGRlZmIwYzYyZmI0ZjZjYTA2YmY0NmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0S2luZC5oCkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1l
bnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRl
LCBEaXJlY3RQcml2YXRlRmllbGRQdXQgfTsKK2VudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGly
ZWN0LCBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUsIERpcmVjdFByaXZhdGVGaWVsZFNldCB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjFhNTQ4YTFmZmIwMzNm
OTExMzE3MzFhZGMwYjVhOGViZThlYTFhNi4uZTNmM2U4NWQyZTM1NzE1MGU1ZDY4NGIxNzIwMzBl
Yzc1OWE3YWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRl
ICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3Rh
bnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVC
bG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgpAQCAtMjcyNSw3ICsy
NzI2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6
ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURp
cmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApA
QCAtMjc0OSwxMyArMjc1MCwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5
VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAgT3BQ
dXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVG
aWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1
dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxG
bGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZh
dGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IGQ5MDJmMjA3MmI2MTYzNmRhYWZjY2RkNmM0MzRlNDFhM2IxNTNmZWQuLjZiODc3ZWUzYjhi
ZTVlZWQ5ZjU2M2RjYTUwMWFlZWJmM2UyYzhiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQw
MjksMTcgKzQwMjksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjbG9i
YmVyV29ybGQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAg
IGNhc2UgUHV0QnlJZERpcmVjdDogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNG
aW5pdGUoKSkgeworICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG5vZGUtPm9wKCkgPT0gUHV0
QnlJZERpcmVjdCB8fCBub2RlLT5vcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZDsKKyAgICAgICAg
ICAgIGF1dG8gcHJpdmF0ZUZpZWxkUHV0S2luZCA9IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5h
bWVCeUlkID8gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpIDogUHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6bm9uZSgpOwogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGly
ZWN0KTsKKyAgICAgICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAK
ICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoc3RhdHVz
LmlzU2ltcGxlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggMjEyMmFhNDk1ZGE3NDNjZGQ1ZWZjMmQ0YWNhYjc2MDQzYmYzM2Ni
OS4uOGM4NDJiMzUyNzJmMTBjY2RjODNhZWVlOGRmZjk0MTVlN2VkOTFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcwLDkgKzcw
LDkgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wY29kZUlu
bGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJS
ZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUg
IlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0yNTIsNiArMjUyLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlz
RGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUpOwogCisgICAgdm9p
ZCBoYW5kbGVQdXRQcml2YXRlTmFtZUJ5SWQoCisgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25z
dCBQdXRCeUlkU3RhdHVzJiwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKICAgICB2b2lkIGhhbmRs
ZURlbGV0ZUJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSog
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVs
ZXRlQnlTdGF0dXMsIEVDTUFNb2RlKTsKICAgICAKQEAgLTEyNjcsMTggKzEyNzAsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgotRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0
ZWNvZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci19Ci0KLXRlbXBsYXRl
PD4KLUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQ
dXRCeVZhbERpcmVjdCBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5l
Y21hTW9kZSgpOwotfQotCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJn
ZXRhYmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChi
eXRlY29kZUluZGV4KTsKQEAgLTUwMTUsNiArNTAwNiwxMzAgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlJZCgKICAgICB9IH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKAorICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsCisg
ICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKQoreworICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NpbXBs
ZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vz
c0lubGluaW5nKCkpIHsKKyAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpCisgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgIGFkZFRvR3JhcGgoUHV0
UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmllbGRQ
dXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9n
cmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQorICAgICAg
ICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAg
ICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1v
cnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmll
bGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkK
KyAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQo
KTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8o
bV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVu
dENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAgICAgICAgZm9y
IChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZhcmlhbnQub2xk
U3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJp
YW50OjpUcmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXRE
YXRhLmFkZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9IHB1dEJ5SWRTdGF0dXMudmFyaWFu
dHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7
CisgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlQdXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKHB1dEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYg
dmFyaWFudCA9IHB1dEJ5SWRTdGF0dXNbMF07CisgICAgCisgICAgc3dpdGNoICh2YXJpYW50Lmtp
bmQoKSkgeworICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAgICAgICAgQVNT
RVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7CisgICAgICAgIGFkZFRvR3JhcGgoRmls
dGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwg
YmFzZSk7CisgICAgCisgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlh
bnQsIHZhbHVlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkp
CisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgY2FzZSBQdXRCeUlkVmFyaWFu
dDo6VHJhbnNpdGlvbjogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc0Rl
ZmluZSgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8o
bV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVu
dENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAgICAgICAgYWRk
VG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZh
cmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgIGlmICghY2hlY2sodmFyaWFu
dC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5h
bWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwg
YmFzZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAg
ICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgCisgICAgICAgIE5vZGUq
IHByb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlvbiA9IG1fZ3Jh
cGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisgICAgCisgICAgICAgIGlmICh2
YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBn
cm93aW5nIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIHRoZW4gaXQgbXVzdCBiZSBiZWNhdXNlIHdlJ3Jl
CisgICAgICAgICAgICAvLyBzdG9yaW5nIGludG8gdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCisg
ICAgICAgICAgICBBU1NFUlQoIWlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKKyAg
ICAKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2Ug
PSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAg
ICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb24pLAorICAg
ICAgICAgICAgICAgICAgICBiYXNlLCBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFn
ZSA9IGJhc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGJhc2UpOworICAgICAgICB9CisgICAgCisg
ICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhLmFkZCgpOworICAgICAgICBkYXRhLT5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAg
ICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAg
CisgICAgICAgIC8vIE5PVEU6IFdlIGNvdWxkIEdDIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBzb21l
b25lIGNvdWxkIGluc2VydCBhbiBvcGVyYXRpb24gdGhhdCBHQ3MuCisgICAgICAgIC8vIFRoYXQn
cyBmaW5lIGJlY2F1c2U6CisgICAgICAgIC8vIC0gVGhpbmdzIGFscmVhZHkgaW4gdGhlIHN0cnVj
dHVyZSB3aWxsIGdldCBzY2FubmVkIGJlY2F1c2Ugd2UgaGF2ZW4ndCBtZXNzZWQgd2l0aAorICAg
ICAgICAvLyAgIHRoZSBvYmplY3QgeWV0LgorICAgICAgICAvLyAtIFRoZSB2YWx1ZSB3ZSBhcmUg
Zml4aW5nIHRvIHB1dCBpcyBnb2luZyB0byBiZSBrZXB0IGxpdmUgYnkgT1NSIGV4aXQgaGFuZGxp
bmcuIFNvCisgICAgICAgIC8vICAgaWYgdGhlIEdDIGRvZXMgYSBjb25zZXJ2YXRpdmUgc2NhbiBo
ZXJlIGl0IHdpbGwgc2VlIHRoZSBuZXcgdmFsdWUuCisgICAgICAgIAorICAgICAgICBhZGRUb0dy
YXBoKAorICAgICAgICAgICAgUHV0QnlPZmZzZXQsCisgICAgICAgICAgICBPcEluZm8oZGF0YSks
CisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisgICAgICAgICAgICBiYXNlLAorICAgICAg
ICAgICAgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0ZXNT
dG9yYWdlKCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0
ZXJmbHksIGJhc2UsIHByb3BlcnR5U3RvcmFnZSk7CisgICAgCisgICAgICAgIC8vIEZJWE1FOiBQ
dXRTdHJ1Y3R1cmUgZ29lcyBsYXN0IHVudGlsIHdlIGZpeCBlaXRoZXIKKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjkyMSBvcgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTI0LgorICAgICAg
ICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAg
ICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAg
ICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZGVmYXVsdDogeworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gfQorfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjA2NCw2
ICs2MTc5LDUwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5h
bWU+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Cisg
ICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAg
ICAgYm9vbCB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IGZhbHNlOworCisgICAgICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAg
ICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihj
dXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkpLmJ5VmFsSW5mbzsKKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRo
ZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCisgICAgICAgICAgICAgICAg
Ly8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAg
ICBpZiAoYnlWYWxJbmZvIAorICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJ
bmZvCisgICAgICAgICAgICAgICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAg
ICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYm
ICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAg
ICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8t
PnN0dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0
KQorICAgICAgICAgICAgICAgIGhhbmRsZVB1dFByaXZhdGVOYW1lQnlJZChiYXNlLCBpZGVudGlm
aWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgYnl0ZWNvZGUubV9w
dXRLaW5kKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcml2
YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9w
ZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BEZWZpbmVEYXRhUHJvcGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KGJ5dGVjb2RlLm1fYmFzZSk7CkBAIC03NTAwLDcgKzc2NTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgUHV0QnlJ
ZFN0YXR1cyBzdGF0dXM7CiAgICAgICAgICAgICAgICAgaWYgKHVpZCkKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgdWlkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVpZCwgZmFsc2Us
IFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzKFB1dEJ5SWRTdGF0dXM6OlRh
a2VzU2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAh
PSAxCkBAIC04Mjc3LDcgKzg0MzYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKKyAg
ICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJl
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUpOwogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAg
LTgyODgsNyArODQ0Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5
dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExl
YXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51
bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1vZGUoYnl0ZWNvZGUpKSk7CisgICAgICAg
IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0
QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21h
TW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlW
YWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBz
aW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMmRlNTVhZWQy
N2MxZWEzNDZmOGQwYzVhY2Q2NDY4ZGVhY2JmZTM1MC4uMTZlYTI1ZDNkN2RiYzFhMTJmMjljYzY3
ZTMzYjI2NmRmNDk0N2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjkzLDYgKzI5Myw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2Ft
cGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3BfcHV0
X3ByaXZhdGVfbmFtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAg
ICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODVjNjA5NjgwM2Q1YjE3
MWEyNDUyNzQ3ZGM4ODA0NzU1YzQxMzljYS4uMjcwZjRjODgyYTIyMDhmYTg5MjM3M2NlZDJmYjY2
YjBlZTdkZjY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0
R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0
U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZh
dGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA1
ZTJiZDljOTVlMDgyYjI4MDNjZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4wNThkY2JmZjljNjA0Y2Iz
ZWM0YjZjODU5ZjEzY2U5OTU4YzI4ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjU4LDEwMiArNjU4LDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAg
ICAgICAgICAgICAgIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyeUZv
bGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUt
PmNoaWxkMigpLCBpc0RpcmVjdCwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLCBjaGFuZ2Vk
LCBhbHJlYWR5SGFuZGxlZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERp
cmVjdDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOiB7Ci0gICAgICAgICAgICAgICAg
Tm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICAgICAgRWRnZSBj
aGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9
IGNoaWxkRWRnZS5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBBU1NFUlQoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1
ZSA9IG1fc3RhdGUuZm9yTm9kZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1
ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKLQotICAgICAg
ICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0
dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwotCi0gICAgICAgICAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNGVEwo
KSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGFsbEdvb2Qg
PSB0cnVlOwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0Owot
ICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7Ci0gICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50
cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24mIGNvbmRpdGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUo
bV9ncmFwaC5tX3ZtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0
cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNlbGxV
c2UpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICgh
YWxsR29vZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1
cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Nl
dC5hZGQobmV3U3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFu
dDo6UmVwbGFjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghYWxs
R29vZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvLyBQ
dXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KLSAg
ICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAg
ICAgICAgICAgICBtX2ludGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ss
IHRyYW5zaXRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0
aW9uKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwotCi0g
ICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUg
ZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCi0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1
cywgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBzdGF0dXMpKSwKLSAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5
T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZp
ZXJOdW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7Ci0KLSAg
ICAgICAgICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0
aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cyA9
IHN0YXR1cy52YXJpYW50cygpOwotICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1i
ZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb011
bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdDsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQdXRC
eU9mZnNldChub2RlLCBpbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIo
KSwgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSwgY2hhbmdlZCwgYWxyZWFk
eUhhbmRsZWQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0x
NDcwLDYgKzEzODUsOTUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2
b2lkIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KE5vZGUqIG5vZGUsIHVuc2lnbmVkIGluZGV4SW5CbG9j
aywgRWRnZSBiYXNlRWRnZSwgRWRnZSB2YWx1ZUVkZ2UsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVG
aWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCwgYm9vbCYgY2hhbmdlZCwgYm9vbCYgYWxy
ZWFkeUhhbmRsZWQpCisgICAgeworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9y
aWdpbjsKKyAgICAgICAgTm9kZSogYmFzZU5vZGUgPSBiYXNlRWRnZS5ub2RlKCk7CisgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlk
KCk7CisKKyAgICAgICAgQVNTRVJUKGJhc2VFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKwor
ICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShiYXNlTm9k
ZSk7CisgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWVWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZSh2
YWx1ZUVkZ2UpOworCisgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRl
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMg
PSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iob3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVj
dHVyZS50b1N0cnVjdHVyZVNldCgpLAorICAgICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnVpZCgpLAorICAgICAgICAgICAgaXNEaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQp
OworCisgICAgICAgIGlmICghc3RhdHVzLmlzU2ltcGxlKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQVNTRVJUKHN0YXR1cy5udW1WYXJpYW50cygpKTsKKworICAgICAgICBpZiAo
c3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNoYW5nZWQgPSB0cnVlOworCisgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRy
YW5zaXRpb25zOworICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDog
c3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24mIGNvbmRpdGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC53YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRp
b24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSB8fCBwcml2
YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlv
bigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1
Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAgICAgICAgICAg
IEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpIHx8IHByaXZhdGVGaWVsZFB1dEtp
bmQuaXNTZXQoKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKCptX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQg
dGhlIHN0YXRlIGJlZm9yZS4KKyAgICAgICAgbV9pbnRlcnByZXRlci5kaWRGb2xkQ2xvYmJlcldv
cmxkKCk7CisgICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5C
bG9jaywgdHJhbnNpdGlvbnMpOworICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdl
KS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQorICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKworICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KKworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1
cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29y
ZGVkU3RhdHVzZXMoKS5hZGRQdXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgc3Rh
dHVzKSksCisgICAgICAgICAgICBFZGdlKGJhc2VOb2RlKSk7CisKKyAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAg
ICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgIGVtaXRQ
dXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVu
dGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKKworICAgICAgICBNdWx0aVB1dEJ5T2Zm
c2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAg
ICAgICAgZGF0YS0+dmFyaWFudHMgPSBzdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+
aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIG5vZGUtPmNvbnZl
cnRUb011bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgfQorCiAgICAgSW5QbGFjZUFic3RyYWN0
U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0
YXRlPiBtX2ludGVycHJldGVyOwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5NjliNjkwZjEz
ZjZmZmJmYjdkNzU2YmIzY2EyMjA4Yzc5Li43ZGYzZDM1ZDQyNjI4ZGNkMDk0YmI1ZDdjOTdhMDE2
MTY2NDM3MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0z
MjEsNiArMzIxLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0Fy
Z3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYwMTdlZTA2
NzM0MTBlMDM4Li41ZWJhN2QxZjJjNjhkMDRjOTFlZTYwMTQ5MWExNzhmY2E4MDE5YWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5MDUsMTIg
KzE5MDUsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKwor
ICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAg
ICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAg
ICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVy
YXRvcjoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRl
eCBhNWNkZjFhYTZmM2QyZDliMWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4wNGUwMjVhYjJmMTFi
ZTI4NjU2YTU5YjU3MTI2NTBjZjU4N2QzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKQEAgLTYxNSw3
ICs2MTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QdXRCeU9mZnNldChT
dG9yYWdlQWNjZXNzRGF0YSYgZGF0YSwgRWRnZSBzdG9yYWdlLCBFZGdlIGJhc2UpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8
fCBtX29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQpOworICAg
ICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBt
X29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQgfHwgbV9vcCA9
PSBQdXRQcml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAg
ICBjaGlsZHJlbi5zZXRDaGlsZDMoY2hpbGRyZW4uY2hpbGQyKCkpOwogICAgICAgICBjaGlsZHJl
bi5zZXRDaGlsZDIoYmFzZSk7CkBAIC02MjUsNyArNjI2LDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgY29udmVydFRvTXVsdGlQdXRCeU9mZnNldChNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0
YSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRC
eUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBQdXRQcml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9IGRh
dGE7CiAgICAgICAgIG1fb3AgPSBNdWx0aVB1dEJ5T2Zmc2V0OwogICAgIH0KQEAgLTEwODcsNiAr
MTA4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNh
c2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgzLDYgKzIyODUs
MTkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0
ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFt
ZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2YXRl
RmllbGRQdXRLaW5kKCkpOworICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJv
bUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOworICAgIH0KKwogICAgIGJvb2wgaGFzQXJp
dGhNb2RlKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGQ2ODgxNWQzMWUzNjAwMzQ0M2YxMzVkNWIzOWRj
YjUyY2Q5MDIyMGUuLjc3YTdlYmYxYjkxMTMzOTAwM2ViZDcyYTE2YWRlZTg0ZDQyOTBjYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIwOCw2ICsyMDgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxEaXJl
Y3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5
VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRC
eVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNy
byhQdXRQcml2YXRlTmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dFByaXZh
dGVOYW1lQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDBl
NGMzMWJmMGQ3ZTU4NThiYmRiNzQ0MjMwYTYzNjdjNGZhMGI2MzkuLjQzMzUyNjU5YjJhZTBhYzM1
OTdkOWQ1ZGE4ODkwZWU5OGE4NDQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcElu
Zm8uaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiSGVhcENlbGwu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVj
dCBPcEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3Au
YXNCaXRzKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdC
aXRzKCkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92
YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1NDNjNzdjNTdmNTkwZDk3
ODc0NzguLmZmMzYyODQwMjE5YWI0MmNhNzA3NTdjZDllNWRjYWQ5ZDZlMmRiZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0xMzc4LDYgKzEzNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgog
ICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVu
dHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIwN2NiYTcwZmUxOWM0MTBmMmVkNWE0MDc2ZDg0NmEyN2QxZjFjZjUuLjkxN2RlMDJmZTZiZTI4
YmMzYzg3NjkyZGIwYTU3ZmM5ZTg0Mjc0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjYsNiArNTI2LDggQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0
ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlp
Znk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IGUzMGQ2NmUwODE5ZmMxNDEzZTZmY2Q0YTYyYmMxZGU1ZWQxNTVhYzAuLjQyMGVhOTQ2
ZmMzNTIwMzNhOTM3ZDJmZWU5ZTM0OGUzOGQyZjEwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0LDYgKzM1MjQsNDQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm9wZXJ0eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisKKyAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworCisgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5VmFsdWUuZ3By
KCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5R1BSKTsK
KworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2Vu
ZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgVHJ1c3RlZEltbTMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOworCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworCisgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBj
aGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAvLyB0byBj
aGVjayBpdCBoZXJlLgorICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtp
bmQoKS5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogRGlyZWN0UHJpdmF0
ZUZpZWxkU2V0OworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
cHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5v
ZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CkBAIC0xNDM5Niw3ICsxNDQzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0
Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsK
KyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggMWI2MzIxN2UzNmM3MWViMWVmMGEzNmQ4OTJjMGU2MWQyMGZl
M2U1Mi4uZjA4ZGZlNzYyNzJhYjQ0ODUyYmU0MGQxZmRjY2VkNzJkMzg4MjBmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM2MCw2ICsx
MzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJp
bmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAg
IHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxk
MSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
V2l0aFRoaXMoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUdldEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXgg
OTc0ZTdhOTZhOGFhMmVkMjcwODEyNWFmNGUwYTFjMzY4ZjhmNGQ1YS4uNjA5NTMxYjhmNTY0Yjlk
OWFjODZmYThmYWU4ZTMzMGZkZDAwMmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTkwLDYgKzI1OTAsMTYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoK
ICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMjc3
NDgzMmJjZjM1Mzg3YzNiNWMwN2QxM2Q4ZjlkZjdjZDUwY2FkMS4uYzZjMjdjNGIzODI1NTA5NWZj
ZDU0NDk5ZDg1YmRhYjFlZmZlYTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yOTQ4LDYgKzI5NDgsMTYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNl
IFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAppbmRleCAwNzE1M2I4ZTQ3MTJmNjgyOWI2ZWJjNjMyMTc0NjZmODNkNDZjMWM0Li43MGU3ODM5
OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkxMmQ4ZDM5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cApAQCAtMjY2LDYgKzI2NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgICAgICAgICAvLyBXZSBlbWl0IElDIGNvZGUgd2hlbiB3
ZSBoYXZlIGEgbm9uLW51bGwgY2FjaGVhYmxlSWRlbnRpZmllciBhbmQgd2UgbmVlZCB0byBpbnRy
b2R1Y2UgYQorICAgICAgICAgICAgICAgIC8vIGJhcnJpZXIgZm9yIGl0LiBPbiBQdXRQcml2YXRl
TmFtZSwgd2UgcGVyZm9ybSBzdG9yZSBiYXJyaWVyIGR1cmluZyBzbG93IHBhdGggZXhlY3V0aW9u
LgorICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQ
dXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggYzgwYjE2ODQ0YWFiYWNkODU2Njk2ZDg0NWY4MWMzYzZmOTc3Mzk3YS4u
YjZhODJjNzFkNDRlOTQ3Y2UyOWQyZTI3OWIwYzAzNjhmZGZhYzM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzk0LDYgKzM5NCw4IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UHV0QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlW
YWxXaXRoVGhpczoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0
ZU5hbWVCeUlkOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGVmZGNiYjRlYjQ2ZDdjNzQ3
ZjNmNjc5ZmVhZmI2ZmU3MTQyMzhlNmMuLjdhZTQxZTJjNjA0OWE0Y2Q3MjhlMDE1ZDQ0NzkxYzdm
NzFlZmIzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTEwMTcsNiArMTAxNywxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAg
ICAgICAgIGNhc2UgQXRvbWljc0FuZDoKICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hh
bmdlOgpAQCAtMzk0NSw2ICszOTUxLDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCgpCisgICAgewor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAg
IExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVl
IHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBXZSBl
bWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVl
ZAorICAgICAgICAvLyB0byBjaGVjayBpdCBoZXJlLgorICAgICAgICBhdXRvIHB1dEtpbmQgPSBt
X25vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZp
ZWxkRGVmaW5lIDogRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgICAgICBjYWNoZWRQdXRCeUlk
KG1fbm9kZSwgYmFzZSwgdmFsdWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHV0S2luZCk7CisgICAg
fQorCisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENl
bGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygp
KTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCku
aXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlv
blNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0
LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdp
bi5zZW1hbnRpYyk7CkBAIC00MTkxLDE0ICs0MjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisgICAgdm9pZCBjYWNoZWRQ
dXRCeUlkKE5vZGUqIG5vZGUsIExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVj
bWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpOwotCi0gICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0g
ICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCk7Cisg
ICAgICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CkBAIC00MjE0LDcgKzQyNDIsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwog
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIzMyw3ICs0MjYwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKQEAgLTQyNjEsNiArNDI4OCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dEJ5
SWQoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KTsKKworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1Zh
bHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+b3AoKSA9
PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0OworICAgICAgICBjYWNoZWRQdXRC
eUlkKG5vZGUsIGJhc2UsIHZhbHVlLCBub2RlLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3NzhlN2Q1MDE1YjBiNmM3
Yzc1Y2NjYTIwNTlmMTUuLjczMTcxMDA5NmNmM2UyNDk4YWU0NWRkYTI2YWE4MmU3OWNkNDZhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzksOSArMTM5LDkg
QEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSXRlcmF0
aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiUHJpdmF0
ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQ
dXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9U
aGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDc2MjUyMDE5NzhhMmU2YTg5YTNlYTQxMjhmNjQwNzYzNzk1NmU4MjIuLjlhZDJmM2Jk
ZTJhZWRiOTY0MDFiZWYwZWIyZDJjNjIzZmRmZDdmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTQyNiw2ICs0MjYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCisg
ICAgICAgIERFRklORV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlf
aWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKQEAgLTU4
Nyw2ICs1ODgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX3B1dF9i
eV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQpA
QCAtOTAyLDcgKzkwNCwxMiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgICAg
ICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJU
YWc+KCk7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlzU2V0
KCkpCiAgICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBh
dGNoYWJsZU5vdEluZGV4SnVtcCkpOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCisg
ICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21w
aWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7CisgICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0g
Q29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOworICAgICAgICAgICAgaWYgKEp1
bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKKwogICAgICAgICAgICAgYXV0byBkb25lVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihieVZhbENvbXBpbGF0aW9uSW5mby5kb25lVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIG5l
eHRIb3RQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5uZXh0SG90UGF0aFRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9
IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDUwOGFmNTBmNjFlYjMxNmZlMzMzOWE5N2Q1
MGVjNTRiMTk1NmM3OTcuLmI0NWJlM2FkNTAyNzkxNTBiNzkyNDNhMDRmZmJlYzExZjkzMWY5ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHN0cnVjdCBPcFB1dEJ5VmFsOwogICAgIHN0cnVjdCBPcFB1dEJ5VmFsRGlyZWN0
OworICAgIHN0cnVjdCBPcFB1dFByaXZhdGVOYW1lOwogICAgIHN0cnVjdCBPcFB1dFRvU2NvcGU7
CiAKICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CkBAIC0xNjEsNiArMTYyLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBCeVZhbENvbXBpbGF0aW9u
SW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJn
ZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5v
dEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAg
ICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgewor
ICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtMjM0LDYgKzI0NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wPihi
eVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IH0KIAorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7Cisg
ICAgICAgICAgICBqaXQubV9ieXRlY29kZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4
OworICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQoYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB9CisK
ICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwpAQCAtMjU5LDYgKzI3Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJl
c3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5B
ZGRyZXNzUHRyLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKKwogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJ
VEFycmF5TW9kZSk7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlM
ZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKQEAgLTQwNiwxMSArNDI1LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2Yg
cHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRC
eVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNr
KFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAorICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVt
aXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKKwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCkBAIC02MDUs
NiArNjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ID0gT3BQdXRCeVZhbD4KICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjg2LDYgKzcwOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJv
cGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKaW5kZXggYWU2MWQ5MTg1ZmVjNzViZWVlZWExZGM0M2JiNmE0NzFmMmJk
N2NlNy4uZTg5MDNmNGVlZDc3OGNjYjFkNmFmOGM4MDZjNmU3Mzc5MmFiMTBjZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKQEAgLTEzNSwxMSArMTM1LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUg
ZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRl
RmllbGRBY2Nlc3NLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQp
CiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQogICAgICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCi0g
ICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQp
CiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKIH0KQEAg
LTE1MSwyMiArMTUwLDIyIEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogewotICAgIGlmIChtX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgewotICAgICAg
ICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7Ci0gICAgICAgIEFTU0VSVChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgfQot
Ci0gICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewotICAgICAgICBpZiAobV9wdXRLaW5k
ID09IERpcmVjdCkKKyAgICBzd2l0Y2ggKG1fcHV0S2luZCkgeworICAgIGNhc2UgTm90RGlyZWN0
OgorICAgICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKQorICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYg
KG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0T3B0aW1pemU7Ci0gICAgfQotICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwotICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmU6CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBB
U1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICB9CiB9CiAKIEpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRl
eCAyOWMyZDJlNmQzMjhkYTljYjM3NjExNWQ5OTJlYTJhMmM1MGM1OTk0Li44NTM4MzVhMzkzNTg1
MjkxMjdkZTJmMzk3YjQ5Nzk5ODI0ZTM2ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUg
IlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEzMCwx
MSBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Ig
ewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1v
ZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFj
Y2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1v
ZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0Myw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
RUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKIH07CiAKIGNsYXNzIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMmY3NmRiMDA2OTIxMThhZjg1
MmU3MDYyOTUwMjc0Mjk5ODVhY2ZiMi4uZDhlNWRhMTJhMzBjYzYyOTlkMTBiMzExZjNlZGM4MDVk
NGZjNTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5OSwy
MSArNjk5LDkgQEAgQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJ
ZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2Rl
IEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK0FM
V0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihPcFB1
dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQoT3ApCi17Ci0gICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6Ok5vbmU7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQ
dXRCeVZhbERpcmVjdCBvcCkKLXsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFiNzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li4zNzRkYWM2
NDQ2NmQ0OTkxOWI1NTk0NTRlZWIwZDczZTg2YTZlNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYQogfSAvLyBleHRlcm4gIkMiCiAKIHVzaW5nIFB1dFByaXZhdGVGaWVsZENh
bGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiwg
UHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmllciYpPjsKLUFMV0FZU19JTkxJTkUgc3Rh
dGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFB1dFByaXZhdGVGaWVs
ZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrKCkpCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIHNldFByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBQdXRQ
cml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygp
KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtNzEy
LDcgKzcxMiw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBQdXRQcm9wZXJ0eVNs
b3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkp
OwotICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGlkZW50LCB2
YWx1ZSwgcHV0U2xvdCk7CisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogCiAgICAgaWYgKGNhbGxiYWNrKQpAQCAtNzcwLDExICs3NzAsMTEgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJp
Y3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBl
LCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29k
ZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmVwYXRjaFB1
dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwg
aWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUp
OworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3RQcml2YXRlRmllbGREZWZpbmUpOwogICAgIH0pOwogfQogCi12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRl
RmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtNzgzLDEwICs3ODMsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE8KICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogCi0g
ICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBpZGVudGlmaWVyLCB2YWx1ZSk7CisgICAgc2V0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7CiB9CiAKLXZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpA
QCAtNzk4LDEzICs3OTgsMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKIAotICAg
IHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3Qs
IGlkZW50aWZpZXIsIHZhbHVlLCBbJl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIHsKKyAgICBzZXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWyZdKFZNJiB2bSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNs
b3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CiAgICAgICAgIExPR19JQygo
SUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1p
emUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBi
YXNlT2JqZWN0KSk7CiAKICAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NU
eXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAK
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBv
bGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmll
ciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRQdXQpOworICAgICAgICAg
ICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9s
ZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRl
RmllbGRTZXQpOwogICAgIH0pOwogfQogCkBAIC0xMTE5LDYgKzExMTksMTMxIEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0
KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQog
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6YXRp
b25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKworICAgIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5
bWJvbCgpKTsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Ynl0ZWNvZGVJbmRleCgpICE9IEJ5
dGVjb2RlSW5kZXgoMCkpOworICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUp
OworICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CisgICAgICAgICAgICBpZiAoYnlWYWxJ
bmZvLT5jYWNoZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICBK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCh2bSwgY29kZUJsb2NrLCBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYnlWYWxJbmZvLT5j
YWNoZWRJZCk7CisgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0
aW9uUmVzdWx0OjpPcHRpbWl6ZWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIFNlZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAgICAg
ICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Cisg
ICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
eVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwo
c3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQg
PSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6
YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0
aW9uUmVzdWx0OjpTZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0aCBt
b3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQorICAg
ICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBpdGVy
YXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNlcnZl
IHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAgICAv
LyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZlVXAu
CisgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAgICAg
ICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAg
IH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpH
aXZlVXApIHsKKyAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAgICAg
IGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxsQnlS
ZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgcHV0S2lu
ZC5pc0RlZmluZSgpID8gIG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJh
dGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgp
OworICAgIAorICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhp
biBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5
cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAg
ICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQuaXNE
ZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNl
T2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVOYW1l
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2Ny
aXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICAvLyBQcml2
YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29w
ZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAg
ICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgaWYgKGJ5VmFsSW5mbykK
KyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1
ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKwor
ICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJl
IGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1l
dGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RN
b2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAg
YmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZvKQorICAgICAgICBieVZhbEluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCA2NWU3MTI1OTU2ODMwYTg4M2U4MzMzMDc5NTM5ZTIwNDQyYzA1ZDk0Li4xY2M4OWMzNzJi
NmQxZDIwMjlhMDMyNDYyNzEyYmY3YjYxM2U5ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShKSVQpCiAK
ICNpbmNsdWRlICJKSVRNYXRoSUNGb3J3YXJkcy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1
dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aFJldHVyblR5cGUuaCIKICNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgpAQCAt
MTkxLDEzICsxOTIsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHUKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRT
dHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0
cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1
dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFM
OwogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJ
bmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyYjI3NDFlZDE3MTlhNDczODkyOGEw
ZjJjNjFiZTNlMmRkZDQ3NDNhLi5iMWFiZjI3NzEwMmQ0NjJlNWM1OGIxYTUyNzFhNmRmZjZlNDk0
MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRh
Lmg+CkBAIC0zMTYsNyArMzE3LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRC
eVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1v
ZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVy
IGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRl
QmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAt
MzQ2LDcgKzM0Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
ICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9IEpJ
VDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOworICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNt
YU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTM2OSw2ICszNzAsNDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2st
PmFkZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cmVnVDEpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAo
KTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgCisgICAgTGFiZWwgZG9uZSA9
IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxD
b21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1wLCBk
b25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFs
SW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtp
bmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIExhYmVsIHNsb3dQYXRoID0g
bGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUdQUik7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7CisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1
ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAgIG1fYnlWYWxDb21waWxhdGlvbklu
Zm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOworICAgIG1f
YnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0
ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlckJ5SWQ+KCk7
CkBAIC03MDAsNyArNzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAotICAgICAgICBkaXJlY3QgPyBEaXJl
Y3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAg
ICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAg
LTEzNTgsNyArMTQwMCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdU
MSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5
dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5k
KGp1bXAoKSk7CiAKQEAgLTEzNzcsNiArMTQxOSwxMiBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQs
CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6
ZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0UHJpdmF0ZU5hbWUgYnl0ZWNvZGUs
IENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBK
dW1wTGlzdCYgc2xvd0Nhc2VzKQoreworICAgIGF1dG8gcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0
S2luZC5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogRGlyZWN0UHJpdmF0
ZUZpZWxkU2V0OworICAgIHJldHVybiBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoYnl0ZWNvZGUs
IHB1dEtpbmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOworfQorCiB2b2lk
IEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0ZXIgb3duZXIsIFdyaXRlQmFycmll
ck1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSA9PSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSk7CkBAIC0xNDY2LDYgKzE1MTQsNDAgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsPE9wUHV0QnlWYWw+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5m
byosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBKSVRBcnJheU1vZGUpOwog
Cit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZh
bEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFi
bGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK3sKKyAgICBjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5m
by0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKworICAgIEp1bXBMaXN0IGRvbmVDYXNl
czsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
biA9IGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChieXRlY29kZSwgcHJvcGVydHlOYW1l
LCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7CisKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1fY29kZUJsb2NrLT5tX2xvY2spOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnRoaXMs
IG1fY29kZUJsb2NrKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYXNlcywgYnlWYWxJbmZv
LT5zbG93UGF0aFRhcmdldCk7CisgICAgcGF0Y2hCdWZmZXIubGluayhkb25lQ2FzZXMsIGJ5VmFs
SW5mby0+ZG9uZVRhcmdldCk7CisgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQor
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBieVZhbEluZm8tPmV4
Y2VwdGlvbkhhbmRsZXIpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsU2l0ZSA6IG1fY2Fs
bHMpIHsKKyAgICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkKKyAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLmxpbmsoY2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsKKyAgICB9CisgICAgZ2Vu
LmZpbmFsaXplKHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7CisKKyAgICBieVZhbEluZm8tPnN0
dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKKyAgICAgICAgbV9jb2RlQmxvY2ss
IHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKKyAgICAgICAgIkJhc2VsaW5lIHB1
dF9wcml2YXRlX25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRv
Q1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAg
ICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CisKKyAgICBhdXRvIGdlbmVy
aWNGdW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8gb3BlcmF0aW9uRGVm
aW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0UHJpdmF0ZU5hbWVHZW5lcmljOwor
CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJU
YWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihnZW5lcmlj
RnVuY3Rpb24pKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50
aWZpZXIgcHJvcGVydHlOYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggN2NmZGQ2YzI2NTE1MzEzYjJhZjMw
ODFlYjBmNWMxZWE0YzMwNTc0OC4uZjE1YzBkMDE2MDMwZGY1NGYzYzVkYmI0OGU0MDA3OTliYzli
OTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCkBAIC0zMzEsNiArMzMxLDUwIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlCiB9CiAKIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29k
ZUJsb2NrLT5hZGRCeVZhbEluZm8obV9ieXRlY29kZUluZGV4KTsKKworICAgIGVtaXRMb2FkMihi
YXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworCisgICAgUGF0Y2hh
YmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShm
YXN0UGF0aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8s
IG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVO
YW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAg
IFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKworICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2Rl
Lm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xv
d1BhdGggPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1Qw
KTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKKworICAgIGVtaXRMb2FkKGJhc2UsIGJh
c2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKHBy
b3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkp
OworICAgIGVtaXRMb2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFnR1BSKCksIHZhbHVlUmVncy5wYXls
b2FkR1BSKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGJ5VmFsSW5mbywgVHJ1c3Rl
ZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1tt
X2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKKyAgICBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRy
ZXNzID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0Pihj
dXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtNzA4LDcgKzc1Miw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAotICAgICAgICBy
ZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3RE
aXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOworICAgICAgICByZWdUMSwgYnl0
ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwog
ICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5k
ZXggNmFhMjYwNmFhOWRiNWNiYjlkNjcyODMyOWE5MWVjYWE0ZmY0NDMxOC4uOTI5MGNiYzhmNWFh
Y2ZmZjJhZGQ0ODVkYTg3NTEwMmFlNzlkY2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCkBAIC01MzUsMzQgKzUzNSw0OCBAQCB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKUwog
CiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0
UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0KQogewotICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7
Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKKyAgICBzd2l0Y2ggKHB1dEtpbmQpIHsK
KyAgICBjYXNlIE5vdERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKKyAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3Q7CisgICAgY2FzZSBEaXJlY3Q6CisgICAgICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVs
ZENyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0
ZUZpZWxkU3RyaWN0OwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQ
dXQpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0
cmljdDsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7Ci0gICAgfQotICAg
IGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3ROb25TdHJpY3Q7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3Q7Cisg
ICAgY2FzZSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmU6CisgICAgICAgIEFTU0VSVChzbG90Lmlz
U3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2
YXRlRmllbGRTdHJpY3Q7CisgICAgY2FzZSBEaXJlY3RQcml2YXRlRmllbGRTZXQ6CisgICAgICAg
IEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3Q7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQog
fQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oY29u
c3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQpIC0+IGRlY2x0eXBlKCZv
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpCiB7Ci0gICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpIHsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRj
aCAocHV0S2luZCkgeworICAgIGNhc2UgTm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemU7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7
CisgICAgY2FzZSBEaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKLSAg
ICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQotICAgICAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KQotICAgICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKLSAgICB9
Ci0gICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmU6Cisg
ICAgICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERp
cmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkp
OworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IAorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtp
bmQpCkBAIC02MDksNiArNjIzLDkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChp
c1Byb3h5ICYmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09
IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25D
YWNoZTsKKwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAog
ICAgICAgICBpZiAoc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlICYmIHNsb3QuaXNDYWNoZWFibGVQ
dXQoKSkgewpAQCAtNjcwLDcgKzY4Nyw2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5
cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChwdXRLaW5kICE9IERpcmVjdFByaXZhdGVG
aWVsZFB1dCAmJiBwdXRLaW5kICE9IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGds
b2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7CkBAIC02ODgsNyArNzA0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChw
dXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkgeworICAgICAgICAgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSkgewogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
Y29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2Rl
QmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCkBAIC0xNTIxLDggKzE1
MzcsOCBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0
aW9uID09IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGlt
aXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAg
IGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKLSAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24g
PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgZWxz
ZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZp
ZWxkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFNldFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQorICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICBlbHNlIGlm
ICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGVmaW5l
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgIGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAppbmRleCBmNjEwYzE5Nzc0NjlkY2Q4YzhlMzA0NjMxY2FjNzQ2YmQ0Mjg0
MTNmLi5jOGMyNjE1MjQzYWQ4YzBhNmRlZGQwZTBlZjM1NDVhNDY3NDg3MTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cApAQCAtNTksOSArNTksOSBAQAogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAi
TWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRh
YmxlLmgiCi0jaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxk
UHV0S2luZC5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiUHV0QnlW
YWxGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlNoYWRvd0No
aWNrZW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFp
bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggZDRkMDkxNmZmMmQ3NjE0NDA0M2EzOTVkM2U4YTgxODMwNzIwMTQ2YS4uMzZmYWY1Mzdk
ZmY0NTI5YTViY2ZmZDMwOTZlYjlhMTg1MGRmM2E3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMTc3LDE2ICsxMTc3LDEzIEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBi
eXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICBib29sIGlzUHJpdmF0
ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOwor
ICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwog
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50
MzJJbmRleCgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFs
dWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJl
Y3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCiAg
ICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRl
RmllbGRBY2Nlc3MpOwogICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3Jp
cHQuYXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwogICAgICAgICBpZiAoc3Vic2Ny
aXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJ
bnQzMikpIHsKQEAgLTEyMDAsMjUgKzExOTcsMTE2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5l
eGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwogCi0gICAgQVNTRVJUKHByb3BlcnR5
LmlzUHJpdmF0ZU5hbWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgaWYgKE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVl
LCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0
SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChpc1ByaXZhdGVG
aWVsZEFjY2VzcykgewotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVj
dCwgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2ZsYWdzLmlzUHJp
dmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0
ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgTExJTlRfRU5EKCk7
ICAgIAotICAgICAgICB9Ci0KICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVj
dCwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKICAgICB9CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Zh
bHVlKTsKKworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIEFTU0VSVChwcm9w
ZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBi
YXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBu
dWxscHRyOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0
aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3
YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOwor
ICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAoYnl0ZWNvZGUu
bV9wdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVG
aWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChieXRlY29kZS5tX3B1dEtpbmQuaXNTZXQoKSk7CisgICAgICAgIGJhc2VP
YmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xv
dCk7CisgICAgfQorICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgaWYgKCFMTElO
VF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAg
ICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAgICAmJiBzdWJzY3JpcHQuaXNDZWxs
KCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVy
ZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJ
RFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUq
IGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgICAgICAgICAg
aWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpCisgICAgICAg
ICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CisKKyAgICAgICAgICAgICAgICBpZiAo
U3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZh
bGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVu
aXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVBy
b3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3Rl
ZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0
IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOwor
ICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fbmV3U3Ry
dWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7CisgICAg
ICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNh
Y2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICBpZiAo
c2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAg
ICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ss
IHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9
PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2
aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUt
PnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihnbG9iYWxP
YmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4gJiYgIXNhd1BvbHlQcm90bykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJl
SUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0s
IGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc2VydCBoZWxwcyBjYXRj
aCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQgdG8gZGlzYWJsZSBjYWNoaW5nCisgICAg
ICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9uIHRoZW4gc3RvcmUgdG8gYW4gZXhpc3Rp
bmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25nCisgICAgICAgICAgICAgICAgLy8gcGF0
aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElmIHdlIHJlaWZ5IGEgbGF6eSBwcm9wZXJ0
eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8gdG8gZGlzYWJsZSBjYWNoaW5nLCB3ZSBt
YXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxhY2UgSUMgZG9lcyBub3QKKyAgICAgICAg
ICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVzZSB0eXBlcyBvZiBzdHJ1Y3R1cmUgdHJh
bnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9u
IGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobmV3U3Ry
dWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgbmV3U3RydWN0dXJlLT5k
aWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFz
Q2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIExMSU5UX0VORCgpOyAgICAKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2RlbF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggNmMzMDhkOWYzZGRlMjViOWZlMWI2OGQ3
NzYwZDRlZWUxMWIxYWE4OS4uYTYzNTRmZjlkOGE3ODc4MWUxOGNiZmU4MzNmM2E5YzFjY2I4Y2Rh
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAg
LTc2LDYgKzc2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
cHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfdmFsX2RpcmVjdCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1
dF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2dl
dHRlcl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9z
ZXR0ZXJfYnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlYmQzNmJhY2VkZDRlMDM4MTQwMTYy
OWY5NmExMTY1YTFlN2U5MzY2Li5hNjAyYWJmMDMyODJiMTIwZDNjNjFjZWY3OTk2MWEyYTA5MDAx
ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjE0LDYgKzYxNCwxMyBAQCBtYWNybyB3cml0ZUJh
cnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCiAgICAgICAg
IGVuZCkKIGVuZAogCittYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUs
IGdldCwgY2VsbEZpZWxkTmFtZSwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKyAgICBnZXQoY2VsbEZp
ZWxkTmFtZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEs
IENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKKyAgICB3cml0ZUJhcnJpZXJPbkNlbGxX
aXRoUmVsb2FkKHQyLCByZWxvYWRBZnRlclNsb3dQYXRoKQorLndyaXRlQmFycmllckRvbmU6Citl
bmQKKwogbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdldCwgY2VsbEZpZWxkTmFt
ZSkKICAgICBnZXQoY2VsbEZpZWxkTmFtZSwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKQEAgLTE2
OTMsNiArMTcwMCw0OCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUs
IE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3BhdGNoKCkK
IGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQor
ICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdldChtX3By
b3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Mywg
Q2VsbFRhZywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIp
CisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURb
dDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQ
cml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xv
dworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJh
c2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0
YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJl
SURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3Jl
aSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFu
ZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2Fk
IG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJl
bG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MCwgLm9wUHV0UHJp
dmF0ZU5hbWVTbG93KQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlvbjoKKyAgICAjIFRo
ZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xkcyB0aGUgYmFzZS4K
KyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MSwgdDIsIHQzKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNl
dFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0Miwg
dDMpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRjaCgp
CitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JF
eGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IDZmZTE3MzA3OGNhYzNjMWNjMTkxNDgwNjM2ZDI3N2ViYmZhYTM1NDMuLmZh
ZmY3NDIzZmExNTVjYTUyOGM3NWQ4YzQ5YTZmZmM0YjM4YThmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0x
NzM0LDYgKzE3MzQsNDkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1l
LCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgp
CiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQ
cml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6
ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZ2V0KG1fcHJvcGVydHksIHQz
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wUHV0UHJp
dmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZh
dGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAg
IGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9p
bnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVu
dCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0
MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQs
IG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAg
ICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAg
ICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgorICAgICMgVGhlIG9u
bHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRoZSBiYXNlLgorICAg
IGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0
MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0
MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCisgICAgd3Jp
dGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBkaXNw
YXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwogbWFj
cm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAg
ICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8g
Y29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCA2Mzc3YjRkZWIyNzg0YWU4M2UzNTUxZWU2MzZlZWFiODJl
MTgwYTkzLi42NTFjYjljYWE4M2I1MDlhZmE1NTBiZDc5M2Y3YzdiNDFkMjg3MDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE4Miw3ICsxODIsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRQcml2YXRlRmllbGRTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGlubGlu
ZSBib29sIGdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgaW5saW5lIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxp
bmUgdm9pZCBzZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIGRlZmluZVByaXZhdGVG
aWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0aCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IDk1NDVjMWUx
OTUxYThjZThkNzNhYTAwMTE5YjVjODI0ZjNiZDhlMWYuLjZjNTM5ZmNlMzM0ZGM2YTRlYmRkYzI5
OGM0YjBiMTBkZjU3MzExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCkBAIC02MTcsNyArNjE3LDcgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OmdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRydWUpOwogfQogCi1pbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0U2xvdCkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcml2YXRlRmllbGQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90KQogewogICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmll
bGRQdXRLaW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTEyMzc3YTliMTNlOTFiZmYzY2EwNzJkMmQzNzkw
NmY5ZTZjYjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKKworI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBQcml2YXRlRmllbGRQ
dXRLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKGlzU2V0KCkp
CisgICAgICAgIG91dC5wcmludCgiU2V0Iik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQo
IkRlZmluZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNk
YzRjYTMwNDhlYzdkYTAxZGJhMGQwYWFmYzg0YmI1Njc1MmUzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50
U3RyZWFtOworfTsKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcml2YXRlRmllbGRQdXRL
aW5kIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTm9uZSA9IDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IFNldCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90
IERlZmluZSA9IDI7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVs
ZFB1dEtpbmQgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kKGJ5dGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIG5v
bmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKE5vbmUpOyB9CisgICAgc3RhdGljIGNv
bnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIHNldCgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1
dEtpbmQoU2V0KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBk
ZWZpbmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKERlZmluZSk7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vbmU7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
ID09IFNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUgPT0gRGVmaW5lOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRT
dHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0
S2luZCh1aW50OF90IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAg
ICAgICBBU1NFUlQobV92YWx1ZSA9PSBOb25lIHx8IG1fdmFsdWUgPT0gU2V0IHx8IG1fdmFsdWUg
PT0gRGVmaW5lLCBtX3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzkyNTQyZjkyZTVmN2FiMDJhYmM3YTdkM2MxODk0NjZiN2Q0
ZGUwYS4uZGU3ZWY1YmJmMzJmOTQ0NDNmYzBjMWIwMjQ2N2Q0ODhhMTcyODVlOCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAyMC0wOS0xNyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bRVNOZXh0XSBDcmVhdGUgYSBuZXcgb3Bjb2RlIHRvIGhhbmRsZSBwcml2YXRl
IGZpZWxkcyBzdG9yZS9kZWZpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkanVzdGluZyB0ZXN0cyB0aGF0IGVtaXQgYGdldF9wcml2YXRlX25hbWVg
IHRvIGF2b2lkIGV4ZWN1dGlvbiBpbgorICAgICAgICBGVEwvREZHLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRl
LWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRz
LXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvcHV0LXB1YmxpYy1maWVsZC5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMt
cHV0LWJ5LWlkLWRpcmVjdC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0
cnVjdHVyZS10cmFzaXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1
dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWlu
dmFsaWQtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMt
d2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzOiBBZGRlZC4K
KwogMjAyMC0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3Jw
aGljLXB1dC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNmM4YzQ5YmRlZDJlMmJjYjM3
Njc3ZjQ2NTQxNTUxYjg2ZDU1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVs
ZC5qcwpAQCAtMCwwICsxLDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNz
IEMgeworICAgICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMu
I2ZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gMDsKKworbGV0IGMyID0gbmV3IEMoKTsK
K2MyLmJhciA9IDA7CisKK2xldCBjMyA9IG5ldyBDKCk7CitjMy5iYXogPSAwOworCitsZXQgYXJy
ID0gW2MxLCBjMiwgYzNdOworCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewor
ICAgIGFycltpICUgYXJyLmxlbmd0aF0uc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRlLWZp
ZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0
LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2MjhkMzg4YmIwNTBiNjJlNjU5OGJmN2M4
M2FmYTQ4ODYwODUyOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMTYg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkOwor
CisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMo
KTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYy5zZXRGaWVsZChp
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMt
cHV0LXB1YmxpYy1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGlj
LXB1dC1wdWJsaWMtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzMmZjZmM1NTRlNDhlZjQ3NTM3NzFj
Mzk1ZmIyZWU4ZWE2NWU5NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHltb3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanMKQEAgLTAsMCArMSwyNCBAQAorY2xh
c3MgQyB7CisgICAgZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlz
LmZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gMDsKKworbGV0IGMyID0gbmV3IEMoKTsK
K2MyLmJhciA9IDA7CisKK2xldCBjMyA9IG5ldyBDKCk7CitjMy5iYXogPSAwOworCitsZXQgYXJy
ID0gW2MxLCBjMiwgYzNdOworCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewor
ICAgIGFycltpICUgYXJyLmxlbmd0aF0uc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZmNjZTJlZjY0MTY0
ODNlNjIyNzNjOGY1MDQ1ZWI0NDE2ODVlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNz
IEMgeworICAgIGZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy5m
aWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsK
KworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsK
KyAgICBjLnNldEZpZWxkKGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZjVlNjMwNTU3OGRlZjY4YjRlMjZmZmY4ZTcxY2Y5ZTBiOTQ4ZmNiCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmll
ci1pbnNlcnRpb24uanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFs
bG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUi
LCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbihhLCBlKSB7CisgICAgICAgIGlmIChhICE9
PSBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2Zp
ZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJw
MSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAg
ICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAg
dGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAg
ICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Cisg
ICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb2xkT2JqZWN0ID0gbmV3IEM7Citmb3IgKDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDUwMDApIHsKKyAgICAgICAgbGV0IGMgPSBuZXcg
QzsKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaSA9
PSA1MDAwKQorICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgb2xkT2JqZWN0LnNldEZpZWxkKHtw
cm9wOiBpfSk7CisgICAgICAgIGVkZW5HQygpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKG9s
ZE9iamVjdC5nZXRGaWVsZCgpLnByb3AsIGkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRp
cmVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFz
LXB1dC1ieS1pZC1kaXJlY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgw
N2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1w
dXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKQEAgLTAsMCAr
MSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitj
bGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAg
ICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFy
cltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJw
MiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAi
cDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAy
Il0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0
aGlzLiNmaWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlm
IChpID4gNTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1i
eS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFz
LXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNlYzhhZGJjNDgxNGEzNjBj
YzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQu
anMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0
ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
dGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3
RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFu
Y2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5u
YW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0
IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGlu
aXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAg
bGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlm
IChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBp
ZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAg
ICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5l
dyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30pOworICAgICAg
ICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1z
dHJ1Y3R1cmUtdHJhc2l0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1i
eS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
ZDZlNDUzNjRiMDJiNDM1NTRlZDM2MmQ0YWE4ZGUxMGJjNDdmYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0
cnVjdHVyZS10cmFzaXRpb24uanMKQEAgLTAsMCArMSw1MCBAQAorLy9AcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhy
ZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0
YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBl
Lm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitj
bGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgcmV0dXJuIHt9OworICB9Cit9CisK
K2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjZmllbGQgPSAwOworCisgICAgZ2V0RmllbGQo
Y2hhbmdlUmVjaWV2ZXIpIHsKKyAgICAgICAgbGV0IHIgPSB0aGlzOworICAgICAgICBpZiAoY2hh
bmdlUmVjaWV2ZXIpIHsKKyAgICAgICAgICAgIHIgPSB7fTsKKyAgICAgICAgfQorCisgICAgICAg
IHIuI2ZpZWxkID0gJ2Jhcic7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBpZiAoaSA8IDkwMDApCisgICAgICAgIEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwo
YywgZmFsc2UpOworICAgIGVsc2UgeworICAgICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChjLCB0
cnVlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MTY5NWExYWRlMzc2OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVjMmRhCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5q
cwpAQCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2Zp
ZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAw
KQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7
CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7Cisg
ICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsK
KyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1w
dXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMmZhYTg5MWFlNDE0MDFlZWFjZmRhZWQ4MzVm
NGU0MmRmNGU1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAg
KzEsNTcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlUG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xl
dCBpdGVyYXRpb25zID0gMTAwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZhbHNlOwor
bGV0IGNvbnN0cnVjdERpZmZlcmVudCA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0g
dGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoY29uc3RydWN0RGlmZmVy
ZW50KQorICAgICAgICAgICAgdGhpcy5mb28gPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBtZXRob2Qoaiwgb3RoZXIpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBs
ZXQgb2JqID0gdGhpczsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxhdGlv
biAmJiBpIDwgaXRlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAgICBpZiAo
aiAlIDIpIHsKKyAgICAgICAgICAgIG90aGVyLmZvbyA9IGo7CisgICAgICAgICAgICBvYmogPSBv
dGhlcjsKKyAgICAgICAgfQorICAgICAgICBvYmouI2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBn
ZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5s
aW5lKEMucHJvdG90eXBlLm1ldGhvZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVs
ZCk7CisKK2xldCBvdGhlckMgPSBuZXcgQygpOworCitjb25zdHJ1Y3REaWZmZXJlbnQgPSB0cnVl
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDMwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYy5tZXRob2QoaSwgb3RoZXJDKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0Rmll
bGQoKSwgMCk7Cit9CisKK3RyaWdnZXJDb21waWxhdGlvbiA9IHRydWUKK2xldCBjID0gbmV3IEMo
KTsKK2MubWV0aG9kKDAsIG90aGVyQyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
aXRlcmF0aW9ucyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzcyMGVjODA0YTk0ZjcxZTM1OGVhN2FhZTZhNmZlOGRlZTI1ODU1MgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9s
ZGluZy10by1wdXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkg
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7CisgICAgfQorfQorCitsZXQgaXRlcmF0aW9ucyA9IDEwMDAwOworbGV0IHRyaWdnZXJD
b21waWxhdGlvbiA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIG1l
dGhvZCgpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJp
Z2dlckNvbXBpbGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7
CisgICAgICAgIHRoaXMuI2ZpZWxkID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDA7IGkrKykgeworICAgIGMubWV0aG9kKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksIDApOworfQorCit0cmlnZ2VyQ29tcGlsYXRpb24gPSB0cnVlCitjLm1ldGhvZCgpOwor
YXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ2YzI5OWM2NjI3
MGJhYmNhM2QwMDdiN2E3ODMwOTc3Mjc5NGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpAQCAtMCwwICsxLDQyIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oZHluYW1pY1Byb3BlcnR5KSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworICAgIAorICAgICAgICBpbml0KCkg
eworICAgICAgICAgICAgdGhpc1tkeW5hbWljUHJvcGVydHldID0gZHluYW1pY1Byb3BlcnR5Owor
ICAgICAgICB9CisKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
ICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24p
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQ2xhc3MgPSBj
bGFzc0RlY2xhcmF0aW9uKCdwcm9wZXJ0eScgKyBpKTsKKyAgICBsZXQgYyA9IG5ldyBDbGFzcygp
OworICAgIGMuc2V0RmllbGQoJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0Rmll
bGQoKSwgJ3Rlc3QnKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtaW52YWxpZC1kZWZpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1OThlNzAxOWQzNzRkNjBhYTlkN2Nk
YTljZjU0MmI3MTY3ZjNiNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91
bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJl
d0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAg
ICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3Rh
bmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUu
bmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xl
dCBzaG91bGRPdmVycmlkZVJldHVybiA9IGZhbHNlOworbGV0IG9iajsKKworY2xhc3MgQiB7Cisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChzaG91bGRPdmVycmlkZVJldHVybikKKyAg
ICAgICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKwor
Y2xhc3MgQyBleHRlbmRzIEIgeworICAjZmllbGQgPSAndGVzdCc7CisKKyAgZ2V0RmllbGQoKSB7
CisgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgIH0KK30KK25vSW5saW5lKEMuY29uc3RydWN0
b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAgICBzaG91bGRPdmVy
cmlkZVJldHVybiA9IHRydWU7CisgICAgICBvYmogPSB7fTsKKyAgICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5wcm90b3R5cGUuZ2V0RmllbGQuY2FsbChvYmop
LCAndGVzdCcpOworICAgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4gewor
ICAgICAgICAgIG5ldyBDKCk7CisgICAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICAgIGxldCBvYmog
PSB7fTsKKyAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgIGFzc2VydC5zYW1lVmFsdWUoYy5n
ZXRGaWVsZCgpLCAndGVzdCcpOworICAgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwg
KCkgPT4geworICAgICAgICAgIGMuZ2V0RmllbGQuY2FsbChvYmopOworICAgICAgfSk7CisgIH0K
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1z
dG9yZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MzQ3Y2VhNjAwMDVhOWI1Zjg2OGEwYjUzYmYyMWQ3NWMyNGZiYjA4Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlk
LXN0b3JlLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAg
aWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSAr
ICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4
Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVk
IHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkU3RvcmUgPSBmYWxz
ZTsKKworZnVuY3Rpb24gZm9vKCkgeworICBjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmlu
aXQoKTsKKyAgICAjZm9vOworCisgICAgaW5pdCgpIHsKKyAgICAgIGlmIChzaG91bGRTdG9yZSkK
KyAgICAgICAgdGhpcy4jZm9vID0gMTI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ldyBDKCk7
Cit9Citub0lubGluZShmb28pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgaWYgKGkgPiAxMDAwKSB7CisgICAgc2hvdWxkU3RvcmUgPSB0cnVlOworICAgIGFzc2VydC5z
aG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgIGZvbygpOworICAgIH0pOworICB9
IGVsc2UgeworICAgIGZvbygpOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQt
d2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMzMTRmYTllNzA0OWYxYjgwYjAy
ZmMwYTcxOTU0N2U3YTIxZGI5MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5q
cwpAQCAtMCwwICsxLDY5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5j
dG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSAr
ICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNl
cHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzZXRGaWVsZCh2
KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAg
IH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5s
aW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVs
ZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9
CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKK2xldCBDMiA9IGZhY3Rv
cnlDbGFzcygpOworCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0
RmllbGQoKSwgJ3Rlc3QnKTsKK2MyLnNldEZpZWxkKCdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUo
YzIuZ2V0RmllbGQoKSwgJ2ZvbycpOworCitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJv
d3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYy5zZXRGaWVsZC5jYWxsKGMyLCAndGVzdCcpOwor
fSk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYzIuc2V0RmllbGQu
Y2FsbChjLCAndGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdjZmM1MzY0Y2E5ZTAyY2U5NTIzYmFjNDE1YzE4MDE0NmUxNTY4OWQK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHlt
b3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0
IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGlu
aXQoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxk
ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7
CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yICg7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZp
ZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28n
ICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YTMyOTdiZWQ4MmQ3YzBjN2U1
MmQ1NWE3NWU1YWMyMTE4MWI3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsMzIgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFs
dWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3QnOworCisgICAgc2V0RmllbGQodikg
eworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1k
aWZmZXJlbnQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
d2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDM3ZDgxN2VkZTE0YTIw
MzVmMzVhNjg4YmE0MTVkYTE1ZmQzNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCkBAIC0wLDAg
KzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbigpIHsKKyAgICBjbGFzcyBD
IHsKKyAgICAgICAgI2ZpZWxkOworICAgIAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAg
ICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRM
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xh
c3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CitsZXQgQzIgPSBj
bGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEgOiBuZXcgQzI7CisgICAgYy5zZXRGaWVsZCgndGVz
dCcgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnICsgaSk7
Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409053</attachid>
            <date>2020-09-17 11:51:13 -0700</date>
            <delta_ts>2020-09-21 09:52:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200917155104.patch</filename>
            <type>text/plain</type>
            <size>167892</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NzA1YjdmYjEwZDZlOTk4MWIwZWY4NGM5MmZhNWM1NGYwMGU1YjY1Li5mMDZkMWU2OGU0OGE2ODEy
MzIwYzdjOWVkNGQwOTNmNjI0YTVhYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMjAtMDktMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0IG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBzdXBwb3J0IG9mIElDIGZvciBhbGwg
dGllcnMuIEZvciBERkcgYW5kIEZUTCwgd2UKKyAgICAgICAgYXJlIG9ubHkgZW1taXRpbmcgSUMg
d2hlbiB3ZSBhcmUgYWJsZSB0byBlbWl0IGBDaGVja0NvbnN0YW50YAorICAgICAgICBmb3Igc3Vi
c2NyaXB0IGlkZW50aWZpZXIgZHVyaW5nIEJ5dGVjb2RlIHBhcnNpbmcuIFdlIGFyZSBhZGRpbmcg
YSBuZXcKKyAgICAgICAgREZHIG5vZGUgY2FsbGVkIGBQdXRQcml2YXRlTmFtZUJ5SWRgIHRoYXQg
YWhuZGxlcyBzdWNoIGNhc2VzIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBjb25zdGFudCBpZGVudGlm
aWVycy4KKyAgICAgICAgV2UgYXJlIGFsc28gYWRkaW5nIGEgbmV3IERGRyBub2RlIGBQdXRQcml2
YXRlTmFtZWAgdGhhdCBoYW5kbGVzIGdlbmVyaWMKKyAgICAgICAgY2FzZSBvZiBgcHV0X3ByaXZh
dGVfbmFtZWAuIFRoZSBzdHJhdGVneSB1c2VkIHRvIGNvbXBpbGUKKyAgICAgICAgYHB1dF9wcml2
YXRlX25hbWVgIGlzIHZlcnkgc2ltaWxhciB3aXRoIHdoYXQgd2UgYXJlIHVzaW5nIHdpdGgKKyAg
ICAgICAgYHB1dF9ieV92YWxbX2RpcmVjdF1gLiBXZSBmaXJzdCB0cnkgdG8gY29tcGlsZSBpdCBh
cyBgW011bHRpXVB1dEJ5T2Zmc2V0YAorICAgICAgICB1c2luZyBwcm9maWxlZCBpbmZvcm1hdGlv
biBmcm9tIExMSW50IGFuZCBCYXNlbGluZSBleGVjdXRpb24uIElmIGl0CisgICAgICAgIGlzIG5v
dCBwb3NzaWJsZSwgd2UgZW1pdCB0aGUgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBXZSBn
ZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFtZUJ5
SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0cnVj
dHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRl
Y29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAgICAq
IGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2
YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVG
aWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRlTmFt
ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpl
Y21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAg
ICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJp
emUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjp0cnlGb2xkQXNQdXRCeU9mZnNldCk6
CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dD
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcml2
YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVB1dFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAo
SlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6
SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChKU0M6
OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0UHJpdmF0
ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAg
IChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcml2
YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQ
cml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVs
ZFB1dEtpbmQ6Om5vbmUpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQp
OgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUpOgorICAgICAgICAo
SlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc05vbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpQ
cml2YXRlRmllbGRQdXRLaW5kOjppc1NldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6OmlzRGVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxk
UHV0S2luZDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5k
OjpQcml2YXRlRmllbGRQdXRLaW5kKToKKwogMjAyMC0wOS0wMiAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiB2YWx1ZS5pc0Nl
bGwoKSAmJiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEN1c3RvbUdldHRlclNldHRlclR5cGUg
Li9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MzE1OWFmYjg1ODRkODk0MGVkNWQ1YjNmMjdhMzQ0M2U4
ZjA4ZDMyLi44MDBkZWY0YWE5ZWMyNjk3YTUwNDFiODBkZjA4ZTcxMDg2MjM1MjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDcsNyArNTQ3LDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5k
cy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmgKQEAgLTk3MSw2ICs5NzAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGlt
ZS9PcHRpb25zTGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2
YXRlRmllbGRQdXRLaW5kLmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM2ODk1NWYyMmRlMmYyNjI3ODZlN2U2ODEz
YTI0MDhiODg3ZTg5ZGYuLjcwY2Q3MzU5ZmNlODU1ZjUwMTJiZmQxOGU4NTk5OTQ5ZDQ2MjcxOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4
NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3
NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEyNjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
REQxNDUwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0Mg
LyogQVJNdjdSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0
MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNDE1Miw4ICs0MTUyLDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBh
cnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRC
ODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIx
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MTczLDYgKzQxNzEsOCBAQAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTRE
MjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmll
bGRQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZh
dGVGaWVsZFB1dEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzYyMiw2ICs3NjIyLDggQEAKIAkJCQkzN0M3MzhEMTFFREI1Njcy
MDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQw
MTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50Lmgg
Ki8sCisJCQkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQu
Y3BwICovLAorCQkJCTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRL
aW5kLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
Ki8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
aCAqLywKQEAgLTg0OTMsOCArODQ5NSw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyog
UHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oICovLAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRC
eVZhbEZsYWdzLmNwcCAqLywKLQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmgg
Ki8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3Bw
ICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmgg
Ki8sCkBAIC0xMDIyOSw2ICsxMDIyOSw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIw
IC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCQjczQjgxREVGM0FBRTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZp
ZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5
REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRE
NTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI2OSw3ICsx
MDI3MCw2IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQ
dXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2
MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlZDNhOGQxYjUxNDM3YjVkYWRjZDI5
NWY3MzJjMGQ5YTMzZmQwNDZlLi40NTVjYmI5NDBjMTI1ODdjNDhjOGJhY2M0NTdkMWZlYTJlN2Vl
OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
LWJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNw
cAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcApAQCAtOTQzLDYgKzk0Miw3IEBAIHJ1bnRpbWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09w
dGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAK
K3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwCiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURl
c2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAyYWY5NzU3NzMyMzlkZDA4ZDQ5MzQzNzZiMjBiNjMyM2RkNGJlNWMxLi40
MWFkN2Y0Yjc0YWQ3MjU1ZGQ1MTYwYWM3N2JiNmM4MDNhM2U5YzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ2LDEwICs0NiwxMCBA
QCB0eXBlcyBbCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAogICAgIDpSZXN1bHRUeXBlLAogICAg
IDpPcGVyYW5kVHlwZXMsCisgICAgOlByaXZhdGVGaWVsZFB1dEtpbmQsCiAgICAgOlByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKICAgICA6UHV0QnlJZEZsYWdz
LAotICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlwZSwKICAgICA6U3RydWN0dXJl
LAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU3NCw2ICs1NzQsMjAgQEAgb3AgOmdldF9wcml2YXRl
X25hbWUsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKICAgICB9CiAK
K29wIDpwdXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwdXRLaW5kOiBQcml2YXRlRmllbGRQdXRL
aW5kLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAorICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAg
ICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLApAQCAtNTk5LDcgKzYxMyw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVj
dCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBm
bGFnczogUHV0QnlWYWxGbGFncywKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApp
bmRleCAyOWU3YTEzZWY3YjFkNjA1ZTk4MWE2YmVlYTQwODk3NmIyMmNlYjg3Li40NjBlOTczMDE2
NjkzYjEyNDQ1ZTQxYjJmODI5YTZhNWY2Zjc2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyNyw2ICsyMjcsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
UmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1l
LCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5
KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhP
cFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpCiAgICAgVVNFUyhPcEluQnlW
YWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVl
LCBwcm90b3R5cGUpCkBAIC0zOTUsNiArMzk2LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUK
ICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVf
bmFtZToKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmlu
ZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2NzJl
ZTdiZjA1ZWExYWY5ODgzNzRiNTY3MWY4Y2Q2OGM2MjZlMWZhLi5kZWViZDk5ZjFkNjE4OWVhZjJm
NzMxMzEyMzQyMDQzN2JhYWJjYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcApAQCAtNTQyLDYgKzU0Miw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIExJTksoT3BJbkJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWwpCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKKyAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5
V2l0aFNpemUpCkBAIC0xMTM2LDYgKzExMzcsMjUgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMK
ICAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1
dFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdT
dHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAg
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgICAgICAgICB2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAg
ICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzAyLDYgKzEzMjIsMjIgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBt
ZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xk
U3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXByb3BlcnR5IHx8IHZtLmhlYXAu
aXNNYXJrZWQocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXRfcHJpdmF0
ZV9uYW1lIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IDM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMuLmUwNWEyNTY0OGEx
M2IwNTk3MmY2NjRjMzdkZTA4Y2QzYzg5NDk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU4LDQ2ICsyNTgsNiBAQCBz
dHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTxP
cGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7Ci0gICAg
dXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlw
ZTsKLQotICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVt
LCBlbmNvZGVkIGFzOgotICAgIC8vICAgICAgICAgIGlzU3RyaWN0Ci0gICAgLy8gICAgICAgICAg
ICAgdgotICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0Ci0gICAgLy8gICAgICAgICAg
IF4KLSAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwg
MiA9IENyZWF0ZSB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9IDI7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKLQot
ICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCi0gICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFs
RmxhZ3MgZmxhZ3MpCi0gICAgewotICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7Ci0gICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOwotICAgICAgICBh
dXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5w
cml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOwotICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8
IDEpIHwgaXNEaXJlY3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVy
dChUYXJnZXRUeXBlIGdwaSkKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNf
Y2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9
IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOwotICAgICAgICBhdXRvIGFj
Y2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7
Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lID8KLSAgICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9k
ZSkgOgotICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZh
bEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUpOwotICAgIH0KLX07Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNp
emUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+
Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEU+LCBzaXplPjsKQEAgLTQyNyw0ICszODcsMjQgQEAgc3RydWN0IEZpdHM8RUNNQU1v
ZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFByaXZhdGVGaWVsZFB1dEtpbmQs
IHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBG
aXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHJpdmF0ZUZpZWxk
UHV0S2luZCBwdXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKHB1dE1v
ZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgY29udmVydChQcml2YXRlRmllbGRQdXRLaW5kIHB1dE1vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQmFzZTo6Y29udmVydChwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBQcml2YXRlRmllbGRQdXRLaW5kIGNvbnZlcnQodHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBw
dXRNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21C
eXRlKEJhc2U6OmNvbnZlcnQocHV0TW9kZSkpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IDRmMzk0ZjAxZDA1YjMwZjQ4NTlkNWE0NTJhNTc3YzRkMmVjNTFmOGEuLjhiYzE3
Yzg2NDZiYzcwYmRiZTRmYmVmOWE2OTdjOGM5ZmI1ODZiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTQ4LDYgKzQ4LDEyIEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlCiAgICAgVk0mIHZtID0gcHJvZmlsZWRCbG9jay0+dm0o
KTsKICAgICAKICAgICBhdXRvIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CisKKyAgICAvLyBXZSBhcmUgbm90IHll
dCB1c2luZyBgY29tcHV0ZUZyb21MTEludGAgaW4gYW55IHBsYWNlIGZvciBgcHV0X3ByaXZhdGVf
bmFtZWAuCisgICAgLy8gV2UgY2FuIGFkZCBzdXBwb3J0IGZvciBpdCBpZiB0aGlzIGlzIHJlcXVp
cmVkIGluIGZ1dHVyZSBjaGFuZ2VzLCBzaW5jZSB3ZSBoYXZlCisgICAgLy8gSUMgaW1wbGVtZW50
ZWQgZm9yIHRoaXMgb3BlcmF0aW9uIG9uIExMSW50LgorICAgIEFTU0VSVCghaW5zdHJ1Y3Rpb24t
PmlzPE9wUHV0UHJpdmF0ZU5hbWU+KCkpOworCiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0
aW9uLT5hczxPcFB1dEJ5SWQ+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShwcm9maWxlZEJsb2NrKTsKIApAQCAtMjcxLDcgKzI3Nyw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVN
YXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAK
LVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgYm9vbCBpc0RpcmVjdCkKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNl
dCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKQogewogICAgIGlmIChwYXJzZUluZGV4KCp1aWQpKQog
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKQEAgLTI5NCw2ICsz
MDAsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnUKICAgICAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zm
c2V0KSkgeworICAgICAgICAgICAgLy8gV2UgY2FuJ3QgaGF2ZSBhIHZhbGlkIG9mZnNldCBmb3Ig
c3RydWN0dXJlcyBvbiBgUHV0UHJpdmF0ZU5hbWVCeUlkYCBkZWZpbmUgbW9kZQorICAgICAgICAg
ICAgLy8gc2luY2UgaXQgbWVhbnMgd2UgYXJlIHJlZGVmaW5pbmcgYSBwcml2YXRlIGZpZWxkLiBJ
biBzdWNoIGNhc2UsIHdlIG5lZWQgdG8gdGFrZSAKKyAgICAgICAgICAgIC8vIHNsb3cgcGF0aCB0
byB0aHJvdyBleGNlcHRpb24uCisgICAgICAgICAgICBpZiAocHJpdmF0ZUZpZWxkUHV0S2luZC5p
c0RlZmluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOworCiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTWFrZXNDYWxscyk7CiAKQEAgLTMxNiw3ICszMjgsMTQgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cnUKICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgCisKKyAgICAgICAg
Ly8gV2UgY2FuIGhhdmUgYSBjYXNlIHdpdGggUHV0UHJpdmF0ZU5hbWVCeUlkIGluIHNldCBtb2Rl
IGFuZCBpdAorICAgICAgICAvLyBzaG91bGQgbmV2ZXIgY2F1c2UgYSBzdHJ1Y3R1cmUgdHJhbnNp
dGlvbiBiZWNhdXNlIGl0IG1lYW5zIHdlIGFyZQorICAgICAgICAvLyB0cnlpbmcgdG8gc3RvcmUg
aW4gYSBub3QgaW5zdGFsbGVkIHByaXZhdGUgZmllbGQuIFdlIG5lZWQgdG8gdGFrZQorICAgICAg
ICAvLyBzbG93IHBhdGggdG8gdGhyb3cgZXhjcGV0aW9uIGlmIGl0IGV2ZXIgZ2V0cyBleGVjdXRl
ZC4KKyAgICAgICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSkKKyAgICAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworCiAgICAgICAgIC8vIE91ciBo
eXBvdGhlc2lzIGlzIHRoYXQgd2UncmUgZG9pbmcgYSB0cmFuc2l0aW9uLiBCZWZvcmUgd2UgcHJv
dmUgdGhhdCB0aGlzIGlzIHJlYWxseQogICAgICAgICAvLyB0cnVlLCB3ZSB3YW50IHRvIGRvIHNv
bWUgc2FuaXR5IGNoZWNrcy4KICAgICAKQEAgLTMzMSw2ICszNTAsNyBAQCBQdXRCeUlkU3RhdHVz
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RydQogICAgIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25k
aXRpb25TZXQ7CiAgICAgICAgIGlmICghaXNEaXJlY3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChw
cml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpKTsKICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9
IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKICAg
ICAgICAgICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVpZCk7CiAgICAgICAg
ICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAppbmRleCA0ZGRmZmJiODhjODAzNzFmODY4M2U1
NzNmMmJmZWNkNzM5MTdmZGE5Li5mODcyZDRjZTJmNjFjY2NmMzljYzhmYzQzZDgzMzcwOWM5M2Vi
OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1
ZGUgIkV4aXRGbGFnLmgiCiAjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRl
ICJTdHViSW5mb1N1bW1hcnkuaCIKIApAQCAtOTQsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNT
dGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0Rmxh
ZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSk7Ci0gICAgc3RhdGljIFB1dEJ5SWRTdGF0
dXMgY29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpOworICAgIHN0YXRpYyBQdXRCeUlkU3Rh
dHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kKTsK
ICAgICAKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFz
ZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2
NTYzYjA1ZjY0MGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgotCi0jaW5jbHVkZSA8
d3RmL0NvbW1hUHJpbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcg
bmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1
dEJ5VmFsRmxhZ3MgZmxhZ3MpCi17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAg
aWYgKGZsYWdzLmlzRGlyZWN0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIp
OwotICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQotICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7Ci0gICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxk
QWRkKCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5VmFsRmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhZGYyZDFi
MzZjNjFjZTMwMmJmOWMyMzgyNTZhNzA1Njg3NjY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVDTUFNb2RlLmgiCi0jaW5j
bHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBjbGFz
cyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBQdXQs
Ci0gICAgQ3JlYXRlLAotfTsKLQotY2xhc3MgUHV0QnlWYWxGbGFncyB7Ci1wdWJsaWM6Ci0gICAg
Y29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7Ci0g
ICAgfQotCi0gICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhl
IHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCi0gICAgLy8gcHJvdG90eXBlIGNoYWlu
IGhhcyBhIHNldHRlci4KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRl
RGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFs
RmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0
QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpDcmVhdGUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5
VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0
LCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEaXJlY3Q7IH0KLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZWNtYU1vZGU7IH0KLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0KLSAgICBi
b29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KLSAgICBib29sIGlz
UHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5k
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQotICAgIGJvb2wgaXNQcml2YXRlRmll
bGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25zdGV4cHIg
UHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAg
OiBtX2lzRGlyZWN0KGlzRGlyZWN0KQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQotICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKLSAgICAgICAgOiBt
X2lzRGlyZWN0KHRydWUpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2Vz
cykKLSAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBi
b29sIG1faXNEaXJlY3Q7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ7Ci0gICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5k
ZXggZjkwZDUyOWQyYWViYjNjZDk1YzhiNDU3YjY0OGI1Zjc0YjhmYjEzYS4uMjAyZjdjMzM5ODE4
MTFhZGRlZmIwYzYyZmI0ZjZjYTA2YmY0NmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0S2luZC5oCkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1l
bnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRl
LCBEaXJlY3RQcml2YXRlRmllbGRQdXQgfTsKK2VudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGly
ZWN0LCBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUsIERpcmVjdFByaXZhdGVGaWVsZFNldCB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjFhNTQ4YTFmZmIwMzNm
OTExMzE3MzFhZGMwYjVhOGViZThlYTFhNi4uZTNmM2U4NWQyZTM1NzE1MGU1ZDY4NGIxNzIwMzBl
Yzc1OWE3YWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRl
ICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3Rh
bnQuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2lu
ZC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVC
bG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkRXZhbENvZGVCbG9jay5oIgpAQCAtMjcyNSw3ICsy
NzI2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6
ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURp
cmVjdChlY21hTW9kZSgpKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApA
QCAtMjc0OSwxMyArMjc1MCwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5
VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAgT3BQ
dXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVG
aWVsZFB1dEtpbmQ6OmRlZmluZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1
dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxG
bGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZh
dGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IGQ5MDJmMjA3MmI2MTYzNmRhYWZjY2RkNmM0MzRlNDFhM2IxNTNmZWQuLjZiODc3ZWUzYjhi
ZTVlZWQ5ZjU2M2RjYTUwMWFlZWJmM2UyYzhiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQw
MjksMTcgKzQwMjksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICBjbG9i
YmVyV29ybGQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAg
IGNhc2UgUHV0QnlJZERpcmVjdDogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNG
aW5pdGUoKSkgeworICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG5vZGUtPm9wKCkgPT0gUHV0
QnlJZERpcmVjdCB8fCBub2RlLT5vcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZDsKKyAgICAgICAg
ICAgIGF1dG8gcHJpdmF0ZUZpZWxkUHV0S2luZCA9IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5h
bWVCeUlkID8gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpIDogUHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6bm9uZSgpOwogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkudWlkKCksCi0gICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGly
ZWN0KTsKKyAgICAgICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAK
ICAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoc3RhdHVz
LmlzU2ltcGxlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggMjEyMmFhNDk1ZGE3NDNjZGQ1ZWZjMmQ0YWNhYjc2MDQzYmYzM2Ni
OS4uOGM4NDJiMzUyNzJmMTBjY2RjODNhZWVlOGRmZjk0MTVlN2VkOTFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcwLDkgKzcw
LDkgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wY29kZUlu
bGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJS
ZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUg
IlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0yNTIsNiArMjUyLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlz
RGlyZWN0LCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgRUNNQU1vZGUpOwogCisgICAgdm9p
ZCBoYW5kbGVQdXRQcml2YXRlTmFtZUJ5SWQoCisgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25z
dCBQdXRCeUlkU3RhdHVzJiwgUHJpdmF0ZUZpZWxkUHV0S2luZCk7CisKICAgICB2b2lkIGhhbmRs
ZURlbGV0ZUJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSog
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVs
ZXRlQnlTdGF0dXMsIEVDTUFNb2RlKTsKICAgICAKQEAgLTEyNjcsMTggKzEyNzAsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgotRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0
ZWNvZGUpCi17Ci0gICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci19Ci0KLXRlbXBsYXRl
PD4KLUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQ
dXRCeVZhbERpcmVjdCBieXRlY29kZSkKLXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5l
Y21hTW9kZSgpOwotfQotCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJn
ZXRhYmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChi
eXRlY29kZUluZGV4KTsKQEAgLTUwMTUsNiArNTAwNiwxMzAgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlJZCgKICAgICB9IH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKAorICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsCisg
ICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKQoreworICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NpbXBs
ZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vz
c0lubGluaW5nKCkpIHsKKyAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpCisgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgIGFkZFRvR3JhcGgoUHV0
UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmllbGRQ
dXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9n
cmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQorICAgICAg
ICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAg
ICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1v
cnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmll
bGRQdXRLaW5kKSwgYmFzZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkK
KyAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQo
KTsKKyAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8o
bV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVu
dENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAgICAgICAgZm9y
IChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMo
KSkgeworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZhcmlhbnQub2xk
U3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJp
YW50OjpUcmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXRE
YXRhLmFkZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9IHB1dEJ5SWRTdGF0dXMudmFyaWFu
dHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7
CisgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlQdXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKHB1dEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYg
dmFyaWFudCA9IHB1dEJ5SWRTdGF0dXNbMF07CisgICAgCisgICAgc3dpdGNoICh2YXJpYW50Lmtp
bmQoKSkgeworICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAgICAgICAgQVNT
RVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7CisgICAgICAgIGFkZFRvR3JhcGgoRmls
dGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwg
YmFzZSk7CisgICAgCisgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlh
bnQsIHZhbHVlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkp
CisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgY2FzZSBQdXRCeUlkVmFyaWFu
dDo6VHJhbnNpdGlvbjogeworICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc0Rl
ZmluZSgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8o
bV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVu
dENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAKKyAgICAgICAgYWRk
VG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZh
cmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgIGlmICghY2hlY2sodmFyaWFu
dC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5h
bWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcml2YXRlRmllbGRQdXRLaW5kKSwg
YmFzZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAg
ICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgCisgICAgICAgIE5vZGUq
IHByb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlvbiA9IG1fZ3Jh
cGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisgICAgCisgICAgICAgIGlmICh2
YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBn
cm93aW5nIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIHRoZW4gaXQgbXVzdCBiZSBiZWNhdXNlIHdlJ3Jl
CisgICAgICAgICAgICAvLyBzdG9yaW5nIGludG8gdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCisg
ICAgICAgICAgICBBU1NFUlQoIWlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKKyAg
ICAKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2Ug
PSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAg
ICAgICAgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgT3BJbmZvKHRyYW5zaXRpb24pLAorICAg
ICAgICAgICAgICAgICAgICBiYXNlLCBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFn
ZSA9IGJhc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGJhc2UpOworICAgICAgICB9CisgICAgCisg
ICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhLmFkZCgpOworICAgICAgICBkYXRhLT5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAg
ICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAg
CisgICAgICAgIC8vIE5PVEU6IFdlIGNvdWxkIEdDIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBzb21l
b25lIGNvdWxkIGluc2VydCBhbiBvcGVyYXRpb24gdGhhdCBHQ3MuCisgICAgICAgIC8vIFRoYXQn
cyBmaW5lIGJlY2F1c2U6CisgICAgICAgIC8vIC0gVGhpbmdzIGFscmVhZHkgaW4gdGhlIHN0cnVj
dHVyZSB3aWxsIGdldCBzY2FubmVkIGJlY2F1c2Ugd2UgaGF2ZW4ndCBtZXNzZWQgd2l0aAorICAg
ICAgICAvLyAgIHRoZSBvYmplY3QgeWV0LgorICAgICAgICAvLyAtIFRoZSB2YWx1ZSB3ZSBhcmUg
Zml4aW5nIHRvIHB1dCBpcyBnb2luZyB0byBiZSBrZXB0IGxpdmUgYnkgT1NSIGV4aXQgaGFuZGxp
bmcuIFNvCisgICAgICAgIC8vICAgaWYgdGhlIEdDIGRvZXMgYSBjb25zZXJ2YXRpdmUgc2NhbiBo
ZXJlIGl0IHdpbGwgc2VlIHRoZSBuZXcgdmFsdWUuCisgICAgICAgIAorICAgICAgICBhZGRUb0dy
YXBoKAorICAgICAgICAgICAgUHV0QnlPZmZzZXQsCisgICAgICAgICAgICBPcEluZm8oZGF0YSks
CisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisgICAgICAgICAgICBiYXNlLAorICAgICAg
ICAgICAgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0ZXNT
dG9yYWdlKCkpCisgICAgICAgICAgICBhZGRUb0dyYXBoKE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0
ZXJmbHksIGJhc2UsIHByb3BlcnR5U3RvcmFnZSk7CisgICAgCisgICAgICAgIC8vIEZJWE1FOiBQ
dXRTdHJ1Y3R1cmUgZ29lcyBsYXN0IHVudGlsIHdlIGZpeCBlaXRoZXIKKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjkyMSBvcgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTI0LgorICAgICAg
ICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAg
ICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCisgICAgICAg
ICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgZGVmYXVsdDogeworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gfQorfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjA2NCw2
ICs2MTc5LDUwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5h
bWU+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Cisg
ICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOworICAgICAgICAg
ICAgYm9vbCB0cnlDb21waWxlQXNQdXRCeU9mZnNldCA9IGZhbHNlOworCisgICAgICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAg
ICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihj
dXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSkpLmJ5VmFsSW5mbzsKKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRo
ZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCisgICAgICAgICAgICAgICAg
Ly8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAg
ICBpZiAoYnlWYWxJbmZvIAorICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJ
bmZvCisgICAgICAgICAgICAgICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAg
ICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYm
ICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAg
ICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8t
PnN0dWJJbmZvLCBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0
KQorICAgICAgICAgICAgICAgIGhhbmRsZVB1dFByaXZhdGVOYW1lQnlJZChiYXNlLCBpZGVudGlm
aWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgYnl0ZWNvZGUubV9w
dXRLaW5kKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcml2
YXRlX25hbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9w
ZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BEZWZpbmVEYXRhUHJvcGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KGJ5dGVjb2RlLm1fYmFzZSk7CkBAIC03NTAwLDcgKzc2NTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgUHV0QnlJ
ZFN0YXR1cyBzdGF0dXM7CiAgICAgICAgICAgICAgICAgaWYgKHVpZCkKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgdWlkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVpZCwgZmFsc2Us
IFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzKFB1dEJ5SWRTdGF0dXM6OlRh
a2VzU2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAh
PSAxCkBAIC04Mjc3LDcgKzg0MzYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxl
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKKyAg
ICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJl
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUpOwogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAg
LTgyODgsNyArODQ0Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5
dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExl
YXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51
bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1vZGUoYnl0ZWNvZGUpKSk7CisgICAgICAg
IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0
QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21h
TW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlW
YWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBz
aW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMmRlNTVhZWQy
N2MxZWEzNDZmOGQwYzVhY2Q2NDY4ZGVhY2JmZTM1MC4uMTZlYTI1ZDNkN2RiYzFhMTJmMjljYzY3
ZTMzYjI2NmRmNDk0N2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjkzLDYgKzI5Myw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2Ft
cGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3BfcHV0
X3ByaXZhdGVfbmFtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAg
ICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODVjNjA5NjgwM2Q1YjE3
MWEyNDUyNzQ3ZGM4ODA0NzU1YzQxMzljYS4uMjcwZjRjODgyYTIyMDhmYTg5MjM3M2NlZDJmYjY2
YjBlZTdkZjY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0
R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0
U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZh
dGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA1
ZTJiZDljOTVlMDgyYjI4MDNjZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4wNThkY2JmZjljNjA0Y2Iz
ZWM0YjZjODU5ZjEzY2U5OTU4YzI4ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjU4LDEwMiArNjU4LDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAg
ICAgICAgICAgICAgIGJvb2wgaXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyeUZv
bGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUt
PmNoaWxkMigpLCBpc0RpcmVjdCwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLCBjaGFuZ2Vk
LCBhbHJlYWR5SGFuZGxlZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERp
cmVjdDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOiB7Ci0gICAgICAgICAgICAgICAg
Tm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICAgICAgRWRnZSBj
aGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9
IGNoaWxkRWRnZS5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS51aWQoKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBBU1NFUlQoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1
ZSA9IG1fc3RhdGUuZm9yTm9kZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1
ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKLQotICAgICAg
ICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0
dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwotCi0gICAgICAgICAgICAgICAgaWYg
KCFzdGF0dXMuaXNTaW1wbGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNGVEwo
KSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGFsbEdvb2Qg
PSB0cnVlOwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0Owot
ICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7Ci0gICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50
cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24mIGNvbmRpdGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUo
bV9ncmFwaC5tX3ZtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0
cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNlbGxV
c2UpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICgh
YWxsR29vZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1
cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Nl
dC5hZGQobmV3U3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFu
dDo6UmVwbGFjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghYWxs
R29vZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvLyBQ
dXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KLSAg
ICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAg
ICAgICAgICAgICBtX2ludGVycHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ss
IHRyYW5zaXRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0
aW9uKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwotCi0g
ICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUg
ZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCi0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1
cywgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBzdGF0dXMpKSwKLSAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5
T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZp
ZXJOdW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7Ci0KLSAg
ICAgICAgICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0
aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cyA9
IHN0YXR1cy52YXJpYW50cygpOwotICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1i
ZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb011
bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdDsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQdXRC
eU9mZnNldChub2RlLCBpbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIo
KSwgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSwgY2hhbmdlZCwgYWxyZWFk
eUhhbmRsZWQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0x
NDcwLDYgKzEzODUsOTUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2
b2lkIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KE5vZGUqIG5vZGUsIHVuc2lnbmVkIGluZGV4SW5CbG9j
aywgRWRnZSBiYXNlRWRnZSwgRWRnZSB2YWx1ZUVkZ2UsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVG
aWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCwgYm9vbCYgY2hhbmdlZCwgYm9vbCYgYWxy
ZWFkeUhhbmRsZWQpCisgICAgeworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9y
aWdpbjsKKyAgICAgICAgTm9kZSogYmFzZU5vZGUgPSBiYXNlRWRnZS5ub2RlKCk7CisgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlk
KCk7CisKKyAgICAgICAgQVNTRVJUKGJhc2VFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKwor
ICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShiYXNlTm9k
ZSk7CisgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWVWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZSh2
YWx1ZUVkZ2UpOworCisgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRl
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMg
PSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iob3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVj
dHVyZS50b1N0cnVjdHVyZVNldCgpLAorICAgICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnVpZCgpLAorICAgICAgICAgICAgaXNEaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQp
OworCisgICAgICAgIGlmICghc3RhdHVzLmlzU2ltcGxlKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQVNTRVJUKHN0YXR1cy5udW1WYXJpYW50cygpKTsKKworICAgICAgICBpZiAo
c3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNoYW5nZWQgPSB0cnVlOworCisgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRy
YW5zaXRpb25zOworICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDog
c3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24mIGNvbmRpdGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC53YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRp
b24ub2JqZWN0KCksIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSB8fCBwcml2
YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlv
bigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1
Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAgICAgICAgICAg
IEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgpIHx8IHByaXZhdGVGaWVsZFB1dEtp
bmQuaXNTZXQoKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKCptX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQg
dGhlIHN0YXRlIGJlZm9yZS4KKyAgICAgICAgbV9pbnRlcnByZXRlci5kaWRGb2xkQ2xvYmJlcldv
cmxkKCk7CisgICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5C
bG9jaywgdHJhbnNpdGlvbnMpOworICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdl
KS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQorICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKworICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KKworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1
cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29y
ZGVkU3RhdHVzZXMoKS5hZGRQdXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgc3Rh
dHVzKSksCisgICAgICAgICAgICBFZGdlKGJhc2VOb2RlKSk7CisKKyAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAg
ICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgIGVtaXRQ
dXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVu
dGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKTsKKworICAgICAgICBNdWx0aVB1dEJ5T2Zm
c2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAg
ICAgICAgZGF0YS0+dmFyaWFudHMgPSBzdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+
aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIG5vZGUtPmNvbnZl
cnRUb011bHRpUHV0QnlPZmZzZXQoZGF0YSk7CisgICAgfQorCiAgICAgSW5QbGFjZUFic3RyYWN0
U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0
YXRlPiBtX2ludGVycHJldGVyOwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5NjliNjkwZjEz
ZjZmZmJmYjdkNzU2YmIzY2EyMjA4Yzc5Li43ZGYzZDM1ZDQyNjI4ZGNkMDk0YmI1ZDdjOTdhMDE2
MTY2NDM3MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0z
MjEsNiArMzIxLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0Fy
Z3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYwMTdlZTA2
NzM0MTBlMDM4Li41ZWJhN2QxZjJjNjhkMDRjOTFlZTYwMTQ5MWExNzhmY2E4MDE5YWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5MDUsMTIg
KzE5MDUsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKwor
ICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAg
ICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAg
ICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVy
YXRvcjoKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRl
eCBhNWNkZjFhYTZmM2QyZDliMWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4wNGUwMjVhYjJmMTFi
ZTI4NjU2YTU5YjU3MTI2NTBjZjU4N2QzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKQEAgLTYxNSw3
ICs2MTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QdXRCeU9mZnNldChT
dG9yYWdlQWNjZXNzRGF0YSYgZGF0YSwgRWRnZSBzdG9yYWdlLCBFZGdlIGJhc2UpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8
fCBtX29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQpOworICAg
ICAgICBBU1NFUlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBt
X29wID09IFB1dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQgfHwgbV9vcCA9
PSBQdXRQcml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAg
ICBjaGlsZHJlbi5zZXRDaGlsZDMoY2hpbGRyZW4uY2hpbGQyKCkpOwogICAgICAgICBjaGlsZHJl
bi5zZXRDaGlsZDIoYmFzZSk7CkBAIC02MjUsNyArNjI2LDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgY29udmVydFRvTXVsdGlQdXRCeU9mZnNldChNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0
YSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRC
eUlkRGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gUHV0QnlJZCB8fCBtX29wID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1
c2ggfHwgbV9vcCA9PSBQdXRQcml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9IGRh
dGE7CiAgICAgICAgIG1fb3AgPSBNdWx0aVB1dEJ5T2Zmc2V0OwogICAgIH0KQEAgLTEwODcsNiAr
MTA4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNh
c2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgzLDYgKzIyODUs
MTkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0
ZUZpZWxkUHV0S2luZCgpCisgICAgeworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFt
ZSB8fCBvcCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2YXRl
RmllbGRQdXRLaW5kKCkpOworICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJv
bUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOworICAgIH0KKwogICAgIGJvb2wgaGFzQXJp
dGhNb2RlKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGQ2ODgxNWQzMWUzNjAwMzQ0M2YxMzVkNWIzOWRj
YjUyY2Q5MDIyMGUuLjc3YTdlYmYxYjkxMTMzOTAwM2ViZDcyYTE2YWRlZTg0ZDQyOTBjYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIwOCw2ICsyMDgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxEaXJl
Y3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5
VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRC
eVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNy
byhQdXRQcml2YXRlTmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dFByaXZh
dGVOYW1lQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDBl
NGMzMWJmMGQ3ZTU4NThiYmRiNzQ0MjMwYTYzNjdjNGZhMGI2MzkuLjQzMzUyNjU5YjJhZTBhYzM1
OTdkOWQ1ZGE4ODkwZWU5OGE4NDQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcElu
Zm8uaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiSGVhcENlbGwu
aCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVj
dCBPcEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3Au
YXNCaXRzKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdC
aXRzKCkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92
YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1NDNjNzdjNTdmNTkwZDk3
ODc0NzguLmZmMzYyODQwMjE5YWI0MmNhNzA3NTdjZDllNWRjYWQ5ZDZlMmRiZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0xMzc4LDYgKzEzNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAg
ICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgog
ICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVu
dHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIwN2NiYTcwZmUxOWM0MTBmMmVkNWE0MDc2ZDg0NmEyN2QxZjFjZjUuLjkxN2RlMDJmZTZiZTI4
YmMzYzg3NjkyZGIwYTU3ZmM5ZTg0Mjc0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01MjYsNiArNTI2LDggQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0
ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6CisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlp
Znk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IGUzMGQ2NmUwODE5ZmMxNDEzZTZmY2Q0YTYyYmMxZGU1ZWQxNTVhYzAuLjQyMGVhOTQ2
ZmMzNTIwMzNhOTM3ZDJmZWU5ZTM0OGUzOGQyZjEwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0LDYgKzM1MjQsNDQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm9wZXJ0eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisKKyAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworCisgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5VmFsdWUuZ3By
KCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5R1BSKTsK
KworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2Vu
ZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgVHJ1c3RlZEltbTMyKEVDTUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOworCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworCisgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBj
aGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAvLyB0byBj
aGVjayBpdCBoZXJlLgorICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtp
bmQoKS5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogRGlyZWN0UHJpdmF0
ZUZpZWxkU2V0OworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
cHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5v
ZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CkBAIC0xNDM5Niw3ICsxNDQzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0
Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsK
KyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggMWI2MzIxN2UzNmM3MWViMWVmMGEzNmQ4OTJjMGU2MWQyMGZl
M2U1Mi4uZjA4ZGZlNzYyNzJhYjQ0ODUyYmU0MGQxZmRjY2VkNzJkMzg4MjBmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM2MCw2ICsx
MzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJp
bmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAg
IHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxk
MSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
V2l0aFRoaXMoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUdldEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXgg
OTc0ZTdhOTZhOGFhMmVkMjcwODEyNWFmNGUwYTFjMzY4ZjhmNGQ1YS4uNjA5NTMxYjhmNTY0Yjlk
OWFjODZmYThmYWU4ZTMzMGZkZDAwMmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTkwLDYgKzI1OTAsMTYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQ
dXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoK
ICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMjc3
NDgzMmJjZjM1Mzg3YzNiNWMwN2QxM2Q4ZjlkZjdjZDUwY2FkMS4uYzZjMjdjNGIzODI1NTA5NWZj
ZDU0NDk5ZDg1YmRhYjFlZmZlYTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yOTQ4LDYgKzI5NDgsMTYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRl
TmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRl
TmFtZUJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNl
IFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAppbmRleCAwNzE1M2I4ZTQ3MTJmNjgyOWI2ZWJjNjMyMTc0NjZmODNkNDZjMWM0Li43MGU3ODM5
OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkxMmQ4ZDM5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cApAQCAtMjY2LDYgKzI2NiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgICAgICAgICAvLyBXZSBlbWl0IElDIGNvZGUgd2hlbiB3
ZSBoYXZlIGEgbm9uLW51bGwgY2FjaGVhYmxlSWRlbnRpZmllciBhbmQgd2UgbmVlZCB0byBpbnRy
b2R1Y2UgYQorICAgICAgICAgICAgICAgIC8vIGJhcnJpZXIgZm9yIGl0LiBPbiBQdXRQcml2YXRl
TmFtZSwgd2UgcGVyZm9ybSBzdG9yZSBiYXJyaWVyIGR1cmluZyBzbG93IHBhdGggZXhlY3V0aW9u
LgorICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQ
dXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggYzgwYjE2ODQ0YWFiYWNkODU2Njk2ZDg0NWY4MWMzYzZmOTc3Mzk3YS4u
YjZhODJjNzFkNDRlOTQ3Y2UyOWQyZTI3OWIwYzAzNjhmZGZhYzM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzk0LDYgKzM5NCw4IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UHV0QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlW
YWxXaXRoVGhpczoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0
ZU5hbWVCeUlkOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGVmZGNiYjRlYjQ2ZDdjNzQ3
ZjNmNjc5ZmVhZmI2ZmU3MTQyMzhlNmMuLjdhZTQxZTJjNjA0OWE0Y2Q3MjhlMDE1ZDQ0NzkxYzdm
NzFlZmIzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTEwMTcsNiArMTAxNywxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAg
ICBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFt
ZUJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAg
ICAgICAgIGNhc2UgQXRvbWljc0FuZDoKICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hh
bmdlOgpAQCAtMzk0NSw2ICszOTUxLDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCgpCisgICAgewor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAg
IExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVl
IHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBXZSBl
bWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVl
ZAorICAgICAgICAvLyB0byBjaGVjayBpdCBoZXJlLgorICAgICAgICBhdXRvIHB1dEtpbmQgPSBt
X25vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZp
ZWxkRGVmaW5lIDogRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgICAgICBjYWNoZWRQdXRCeUlk
KG1fbm9kZSwgYmFzZSwgdmFsdWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHV0S2luZCk7CisgICAg
fQorCisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENl
bGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygp
KTsKKworICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCku
aXNEZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlv
blNldFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0
LmNvbnN0SW50MzIoRUNNQU1vZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdp
bi5zZW1hbnRpYyk7CkBAIC00MTkxLDE0ICs0MjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCisgICAgdm9pZCBjYWNoZWRQ
dXRCeUlkKE5vZGUqIG5vZGUsIExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVj
bWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpOwotCi0gICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0g
ICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCk7Cisg
ICAgICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CkBAIC00MjE0LDcgKzQyNDIsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwog
CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIzMyw3ICs0MjYwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKQEAgLTQyNjEsNiArNDI4OCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dEJ5
SWQoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KTsKKworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1Zh
bHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+b3AoKSA9
PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0OworICAgICAgICBjYWNoZWRQdXRC
eUlkKG5vZGUsIGJhc2UsIHZhbHVlLCBub2RlLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3NzhlN2Q1MDE1YjBiNmM3
Yzc1Y2NjYTIwNTlmMTUuLjczMTcxMDA5NmNmM2UyNDk4YWU0NWRkYTI2YWE4MmU3OWNkNDZhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzksOSArMTM5LDkg
QEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSXRlcmF0
aW9uTW9kZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiUHJpdmF0
ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQ
dXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9U
aGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDc2MjUyMDE5NzhhMmU2YTg5YTNlYTQxMjhmNjQwNzYzNzk1NmU4MjIuLjlhZDJmM2Jk
ZTJhZWRiOTY0MDFiZWYwZWIyZDJjNjIzZmRmZDdmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTQyNiw2ICs0MjYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCisg
ICAgICAgIERFRklORV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlf
aWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKQEAgLTU4
Nyw2ICs1ODgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX3B1dF9i
eV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQpA
QCAtOTAyLDcgKzkwNCwxMiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgICAg
ICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJU
YWc+KCk7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlzU2V0
KCkpCiAgICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBh
dGNoYWJsZU5vdEluZGV4SnVtcCkpOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCisg
ICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21w
aWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7CisgICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0g
Q29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOworICAgICAgICAgICAgaWYgKEp1
bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKKwogICAgICAgICAgICAgYXV0byBkb25lVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihieVZhbENvbXBpbGF0aW9uSW5mby5kb25lVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIG5l
eHRIb3RQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5uZXh0SG90UGF0aFRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9
IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDUwOGFmNTBmNjFlYjMxNmZlMzMzOWE5N2Q1
MGVjNTRiMTk1NmM3OTcuLmI0NWJlM2FkNTAyNzkxNTBiNzkyNDNhMDRmZmJlYzExZjkzMWY5ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHN0cnVjdCBPcFB1dEJ5VmFsOwogICAgIHN0cnVjdCBPcFB1dEJ5VmFsRGlyZWN0
OworICAgIHN0cnVjdCBPcFB1dFByaXZhdGVOYW1lOwogICAgIHN0cnVjdCBPcFB1dFRvU2NvcGU7
CiAKICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CkBAIC0xNjEsNiArMTYyLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBCeVZhbENvbXBpbGF0aW9u
SW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJn
ZXQpCisgICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5v
dEluZGV4SnVtcCkKKyAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAg
ICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgewor
ICAgICAgICB9CisKICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgbm90SW5kZXhKdW1wOwpAQCAtMjM0LDYgKzI0NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wPihi
eVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IH0KIAorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7Cisg
ICAgICAgICAgICBqaXQubV9ieXRlY29kZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4
OworICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQoYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB9CisK
ICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwpAQCAtMjU5LDYgKzI3Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJl
c3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5B
ZGRyZXNzUHRyLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKKwogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJ
VEFycmF5TW9kZSk7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlM
ZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKQEAgLTQwNiwxMSArNDI1LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2Yg
cHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQoT3ApOworICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1
dEtpbmQoT3ApOwogCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRC
eVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNr
KFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAorICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVt
aXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKKwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCkBAIC02MDUs
NiArNjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ID0gT3BQdXRCeVZhbD4KICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjg2LDYgKzcwOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJv
cGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKaW5kZXggYWU2MWQ5MTg1ZmVjNzViZWVlZWExZGM0M2JiNmE0NzFmMmJk
N2NlNy4uOGJmYWI4MTVlYTE1YjM1OWFkMzQzOWZmMjI0NWZlNmQ3YTlhZDRkZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKQEAgLTEzNSwxMSArMTM1LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUg
ZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRl
RmllbGRBY2Nlc3NLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQp
CiAgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQogICAgICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCi0g
ICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQp
CiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKIH0KQEAg
LTE1MSwyMiArMTUwLDI1IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogewotICAgIGlmIChtX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgewotICAgICAg
ICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7Ci0gICAgICAgIEFTU0VSVChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpOwotICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgfQot
Ci0gICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewotICAgICAgICBpZiAobV9wdXRLaW5k
ID09IERpcmVjdCkKKyAgICBzd2l0Y2ggKG1fcHV0S2luZCkgeworICAgIGNhc2UgTm90RGlyZWN0
OgorICAgICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKQorICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYg
KG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0T3B0aW1pemU7Ci0gICAgfQotICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwotICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmU6CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0
KCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBB
U1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiB9CiAKIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc2NyYXRjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAppbmRleCAyOWMyZDJlNmQzMjhkYTljYjM3NjExNWQ5OTJlYTJhMmM1
MGM1OTk0Li44NTM4MzVhMzkzNTg1MjkxMjdkZTJmMzk3YjQ5Nzk5ODI0ZTM2ZjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJ
VE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlW
YWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5o
IgogCkBAIC0xMzEsMTIgKzEzMCwxMSBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Io
KQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQogICAg
IHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJh
dGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0Myw2IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1f
cHV0S2luZDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5k
ZXggMmY3NmRiMDA2OTIxMThhZjg1MmU3MDYyOTUwMjc0Mjk5ODVhY2ZiMi4uZDhlNWRhMTJhMzBj
YzYyOTlkMTBiMzExZjNlZGM4MDVkNGZjNTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTY5OSwyMSArNjk5LDkgQEAgQUxXQVlTX0lOTElORSBFQ01BTW9kZSBK
SVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1B
TFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQ
dXRCeVZhbERpcmVjdCBvcCkKK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxP
cFB1dFByaXZhdGVOYW1lPihPcFB1dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBvcC5tX2Zs
YWdzLmVjbWFNb2RlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApCi17Ci0gICAgcmV0dXJu
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19J
TkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8
T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKLXsKLSAgICByZXR1cm4gb3Au
bV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpz
dHJpY3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFiNzI5ZWE5NWVjOGQy
NjBlYzE4NTY0MmY0Li4zNzRkYWM2NDQ2NmQ0OTkxOWI1NTk0NTRlZWIwZDczZTg2YTZlNWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMCw3
ICs3MDAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogfSAvLyBleHRlcm4gIkMiCiAKIHVz
aW5nIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmllciYp
PjsKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
YmFzZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUs
IGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVGaWVs
ZENhbGxiYWNrKCkpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHNldFByaXZhdGVGaWVsZChW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1Zh
bHVlIHZhbHVlLCBjb25zdCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQ
cml2YXRlRmllbGRDYWxsYmFjaygpKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIApAQCAtNzEyLDcgKzcxMiw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZv
aWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7
CiAKICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxv
Y2stPnB1dEJ5SWRDb250ZXh0KCkpOwotICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgYmFzZU9iamVjdC0+c2V0
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgaWYgKGNhbGxiYWNrKQpA
QCAtNzcwLDExICs3NzAsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
ZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAgICAgICAgQVNT
RVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQot
ICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJl
Y3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwg
cHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpOwogICAgIH0pOwog
fQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0
cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVp
bnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtNzgzLDEwICs3ODMsMTAgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpOwogCi0gICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7CisgICAgc2V0UHJpdmF0
ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVy
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNzk4LDEzICs3OTgsMTMgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCoKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKIAotICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbJl0oVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xv
dCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICBzZXRQcml2YXRlRmll
bGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2
YWx1ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50
LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CiAKICAgICAgICAgQVNTRVJUX1VOVVNF
RChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hp
bmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAg
ICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9s
ZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRl
RmllbGRQdXQpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0
dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRTZXQpOwogICAgIH0pOwogfQogCkBAIC0xMTE5LDYg
KzExMTksMTMxIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZhbChn
bG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFs
SW5mbywgZWNtYU1vZGUpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRl
RmllbGRQdXRLaW5kIHB1dEtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwor
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIE9wdGltaXph
dGlvblJlc3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9w
dGltaXplZDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVu
dGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAg
QVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+
Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5kZXgoMCkpOworICAgICAgICBBU1NFUlQoIWJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUpOworICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7Cisg
ICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUp
IHsKKyAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJ
ZCh2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7CisgICAgICAgICAgICAgICAgb3B0aW1pemF0
aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQ7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFNlZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkg
YWNjZXNzIHNpdGUuCisgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1p
emF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAg
ICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBz
dWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wdGltaXph
dGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRp
b25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZSkgeworICAgICAgICAvLyBJ
ZiB3ZSB0YWtlIHNsb3cgcGF0aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0
aGVuIG1ha2Ugc3VyZSB3ZQorICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fp
bi4gVGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5CisgICAgICAg
IC8vIGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBv
bHltb3JwaGljLgorICAgICAgICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYg
dGhlIHJlc3VsdCBpcyBHaXZlVXAuCisgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhD
b3VudCA+PSAxMCkKKyAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlv
blJlc3VsdDo6R2l2ZVVwOworICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0g
T3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKKyAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkg
dG8gb3B0aW1pemUuCisgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgcHV0S2luZC5pc0RlZmluZSgpID8gIG9wZXJhdGlvbkRlZmluZVByaXZh
dGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgfQor
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIAorICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBv
bmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNs
YXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNT
dHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CisgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5l
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNldFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBFQ01BTW9kZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5yZWxl
YXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRo
aW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdh
eXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Cisg
ICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGJhc2VPYmplY3QtPnNl
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
CisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIC8vIFByaXZh
dGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3Bl
CisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAg
IGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7CisgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBpZiAoYnlWYWxJbmZv
KQorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cit9CisKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2NWU3MTI1OTU2ODMwYTg4M2U4MzMzMDc5NTM5ZTIw
NDQyYzA1ZDk0Li4xY2M4OWMzNzJiNmQxZDIwMjlhMDMyNDYyNzEyYmY3YjYxM2U5ZjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJKSVRNYXRoSUNGb3J3YXJkcy5oIgorI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aFJldHVyblR5
cGUuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Vbmlx
dWVkU3RyaW5nSW1wbC5oPgpAQCAtMTkxLDEzICsxOTIsMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHUKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQ
cml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVp
bnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5B
TDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3Ry
aWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZp
ZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVp
bnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtp
bmQpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJ
bmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TZXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RG
X0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxF
dmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsK
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKENhbGxG
cmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAy
YjI3NDFlZDE3MTlhNDczODkyOGEwZjJjNjFiZTNlMmRkZDQ3NDNhLi5iMWFiZjI3NzEwMmQ0NjJl
NWM1OGIxYTUyNzFhNmRmZjZlNDk0MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVk
ZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNs
dWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CkBAIC0zMTYsNyArMzE3LDcgQEAgSklUUHV0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2lu
ZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9w
ZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEp
LCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUg
d2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBV
c2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byBy
ZWR1Y2UgY29kZSBzaXplLgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0g
Ynl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwot
ICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOworICAgICAgICBlY21h
TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkK
QEAgLTM2OSw2ICszNzAsNDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleCsrOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0
aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7Cisg
ICAgCisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CisgICAgCisgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mby5hcHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2Rl
SW5kZXgsIGZhc3RQYXRoSm1wLCBkb25lLCBkb25lKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtp
bmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
ICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwg
YmFzZUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5
LCBwcm9wZXJ0eUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Zh
bHVlLCB2YWx1ZUdQUik7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVz
dGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOworICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFk
ZHJlc3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dEdldHRlckJ5SWQ+KCk7CkBAIC03MDAsNyArNzQyLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAot
ICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKICAg
ICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzNTgsNyArMTQwMCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0
S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlO
YW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTEzNzcsNiArMTQxOSwxMiBAQCBK
SVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVj
b2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitKSVRQ
dXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0
UHJpdmF0ZU5hbWUgYnl0ZWNvZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBK
dW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQoreworICAgIGF1dG8gcHV0
S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZpZWxk
RGVmaW5lIDogRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgIHJldHVybiBlbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBz
bG93Q2FzZXMpOworfQorCiB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0
ZXIgb3duZXIsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSA9PSBV
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSk7CkBA
IC0xNDY2LDYgKzE1MTQsNDAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIHRlbXBsYXRlIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWw+KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7
CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbDxPcFB1dEJ5VmFsRGly
ZWN0Pihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNz
UHRyLCBKSVRBcnJheU1vZGUpOwogCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRl
TmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK3sKKyAgICBj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKwor
ICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yIGdlbiA9IGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChi
eXRlY29kZSwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7CisKKyAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOworICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKnRoaXMsIG1fY29kZUJsb2NrKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KHNsb3dDYXNlcywgYnlWYWxJbmZvLT5zbG93UGF0aFRhcmdldCk7CisgICAgcGF0Y2hCdWZmZXIu
bGluayhkb25lQ2FzZXMsIGJ5VmFsSW5mby0+ZG9uZVRhcmdldCk7CisgICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpKQorICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9u
Q2hlY2tzLCBieVZhbEluZm8tPmV4Y2VwdGlvbkhhbmRsZXIpOworCisgICAgZm9yIChjb25zdCBh
dXRvJiBjYWxsU2l0ZSA6IG1fY2FsbHMpIHsKKyAgICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkK
KyAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2Fs
bGVlKTsKKyAgICB9CisgICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7
CisKKyAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigK
KyAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywK
KyAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkg
bmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlk
KCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy52YWx1ZSgpKTsKKyAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZv
KCk7CisKKyAgICBhdXRvIGdlbmVyaWNGdW5jdGlvbiA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0Rl
ZmluZSgpID8gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljIDogb3BlcmF0aW9uU2V0
UHJpdmF0ZU5hbWVHZW5lcmljOworCisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5
VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihnZW5lcmljRnVuY3Rpb24pKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
T3A+CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1
dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXgg
N2NmZGQ2YzI2NTE1MzEzYjJhZjMwODFlYjBmNWMxZWE0YzMwNTc0OC4uZjE1YzBkMDE2MDMwZGY1
NGYzYzVkYmI0OGU0MDA3OTliYzliOTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zMzEsNiArMzMxLDUwIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiB9CiAKIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+
KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbElu
Zm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8obV9ieXRlY29kZUluZGV4
KTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywg
cmVnVDIpOworCisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAo
KTsKKyAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisKKyAgICBMYWJlbCBkb25lID0gbGFi
ZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBp
bGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUs
IGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKKworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1tt
X2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtp
bmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CisgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVn
VDMsIHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKKwor
ICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BS
KCkpOworICAgIGVtaXRMb2FkKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3Bl
cnR5UmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFn
R1BSKCksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJl
Z3MsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworCisgICAgbV9i
eVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJn
ZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKKyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRfb3BfcHV0X2J5X3Zh
bDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtNzA4LDcgKzc1Miw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAog
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLAotICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBk
aXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUp
OworICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNmFhMjYwNmFhOWRiNWNiYjlkNjcyODMyOWE5MWVjYWE0
ZmY0NDMxOC4uOTI5MGNiYzhmNWFhY2ZmZjJhZGQ0ODVkYTg3NTEwMmFlNzlkY2IzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01MzUsMzQgKzUzNSw0OCBAQCB2b2lk
IHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKUwogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRC
eUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQp
IC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQogewotICAgIGlmIChz
bG90LmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKKyAg
ICBzd2l0Y2ggKHB1dEtpbmQpIHsKKyAgICBjYXNlIE5vdERpcmVjdDoKKyAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0
cmljdDsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3Q7CisgICAgY2Fz
ZSBEaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3Q7Ci0gICAgICAgIGlmIChwdXRLaW5k
ID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0OwotICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdDsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3Q7Ci0gICAgfQotICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3Q7Ci0gICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3Q7CisgICAgY2FzZSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmU6Cisg
ICAgICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Q7CisgICAgY2FzZSBEaXJlY3RQcml2
YXRlRmllbGRTZXQ6CisgICAgICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3Q7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZU9wdGltaXpp
bmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1
dEtpbmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUp
CiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2UgTm90RGlyZWN0Ogor
ICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJlY3Q6CisgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkQ3JlYXRlKQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkUHV0KQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZTsKLSAgICB9Ci0gICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwotICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJlY3RQ
cml2YXRlRmllbGREZWZpbmU6CisgICAgICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RP
cHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJU
KHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNl
dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IAorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCkBAIC02MDksNiArNjIzLDkgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAg
ICAgfQogCisgICAgICAgIGlmIChpc1Byb3h5ICYmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVG
aWVsZFNldCB8fCBwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCisgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVl
ICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewpAQCAtNjcwLDcgKzY4Nyw2IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYg
KHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChwdXRL
aW5kICE9IERpcmVjdFByaXZhdGVGaWVsZFB1dCAmJiBwdXRLaW5kICE9IERpcmVjdFByaXZhdGVG
aWVsZENyZWF0ZSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVw
YXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC02ODgsNyArNzA0LDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkg
eworICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZERlZmlu
ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9y
UHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3RydWN0dXJlLCBp
ZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1Zh
bGlkKCkpCkBAIC0xNTIxLDggKzE1MzcsOCBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6
ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKICAgICBlbHNl
IGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3Qg
fHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdE9wdGltaXplOwotICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9u
ID09IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKLSAgICAg
ICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemU7CisgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRp
b25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQorICAgICAgICBv
cHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RP
cHRpbWl6ZTsKICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1
dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBv
cGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCiAgICAgICAg
IG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBmNjEwYzE5Nzc0NjlkY2Q4
YzhlMzA0NjMxY2FjNzQ2YmQ0Mjg0MTNmLi5jOGMyNjE1MjQzYWQ4YzBhNmRlZGQwZTBlZjM1NDVh
NDY3NDg3MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksOSArNTksOSBAQAogI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNp
bmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5o
IgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZDRkMDkxNmZmMmQ3NjE0NDA0M2EzOTVkM2U4YTgx
ODMwNzIwMTQ2YS4uMzZmYWY1MzdkZmY0NTI5YTViY2ZmZDMwOTZlYjlhMTg1MGRmM2E3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0x
MTc3LDE2ICsxMTc3LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
dmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgp
KTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KTsKLSAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1By
aXZhdGVGaWVsZEFjY2VzcygpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9l
Y21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBz
dWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2
YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJ
TlRfRU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7Ci0gICAg
ICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBkb3VibGUgc3Vic2Ny
aXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vi
c2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUp
OwogICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYg
aXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKQEAgLTEyMDAsMjUgKzExOTcsMTE2IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBpZiAo
VU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwog
Ci0gICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFj
Y2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGlmIChpc1ByaXZhdGVGaWVsZEFjY2VzcykgewotICAgICAgICAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAgICAgIGlmIChi
eXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCi0gICAgICAgICAgICAgICAgYmFz
ZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5w
dXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgTExJTlRfRU5EKCk7ICAgIAotICAgICAgICB9Ci0KICAgICAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwg
cHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICB9CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUHV0UHJpdmF0ZU5h
bWU+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKKworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOworCisgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2Fu
IG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQg
Y2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBp
c1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2Rl
KTsKKyAgICBpZiAoYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJhc2VP
YmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwg
c2xvdCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChieXRlY29kZS5tX3B1dEtpbmQuaXNT
ZXQoKSk7CisgICAgICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgfQorICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworCisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKKyAgICAgICAgJiYgYmFz
ZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAg
ICAmJiBzdWJzY3JpcHQuaXNDZWxsKCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0
dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAg
ICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBh
ID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2
bSk7CisgICAgICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6
TmV3UHJvcGVydHkpCisgICAgICAgICAgICAgICAgICAgIGIgPSBiLT5wcmV2aW91c0lEKCk7CisK
KyAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8o
YSwgYikpIHsKKyAgICAgICAgICAgICAgICAgICAgYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVBy
b3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJEZXRlY3Rl
ZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYi0+cmFy
ZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJp
bmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGFy
dCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisgICAg
ICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX3By
b3BlcnR5LmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VD
ZWxsLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+
cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgp
KSB7CisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQ
cm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICAgICAgICAgIGlmICghbmV3
U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUg
PT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFs
aWRhdGVkKCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhd1BvbHlQcm90byA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkUHJvdG90eXBlQ2hhaW4g
JiYgIXNhd1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChv
bGRTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQg
PSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRh
dGEubV9wcm9wZXJ0eS5zZXQodm0sIGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2sp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBU
aGlzIGFzc2VydCBoZWxwcyBjYXRjaCBidWdzIGlmIHdlIGFjY2lkZW50YWxseSBmb3JnZXQgdG8g
ZGlzYWJsZSBjYWNoaW5nCisgICAgICAgICAgICAgICAgLy8gd2hlbiB3ZSB0cmFuc2l0aW9uIHRo
ZW4gc3RvcmUgdG8gYW4gZXhpc3RpbmcgcHJvcGVydHkuIFRoaXMgaXMgY29tbW9uIGFtb25nCisg
ICAgICAgICAgICAgICAgLy8gcGF0aHMgdGhhdCByZWlmeSBsYXp5IHByb3BlcnRpZXMuIElmIHdl
IHJlaWZ5IGEgbGF6eSBwcm9wZXJ0eSBhbmQgZm9yZ2V0CisgICAgICAgICAgICAgICAgLy8gdG8g
ZGlzYWJsZSBjYWNoaW5nLCB3ZSBtYXkgY29tZSBkb3duIHRoaXMgcGF0aC4gVGhlIFJlcGxhY2Ug
SUMgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAvLyBrbm93IGhvdyB0byBtb2RlbCB0aGVzZSB0
eXBlcyBvZiBzdHJ1Y3R1cmUgdHJhbnNpdGlvbnMgKG9yIGFueSBzdHJ1Y3R1cmUKKyAgICAgICAg
ICAgICAgICAvLyB0cmFuc2l0aW9uIGZvciB0aGF0IG1hdHRlcikuCisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobmV3U3RydWN0dXJlID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAg
ICAgICAgbmV3U3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0sIGNv
ZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggNmMz
MDhkOWYzZGRlMjViOWZlMWI2OGQ3NzYwZDRlZWUxMWIxYWE4OS4uYTYzNTRmZjlkOGE3ODc4MWUx
OGNiZmU4MzNmM2E5YzFjY2I4Y2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKQEAgLTc2LDYgKzc2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCk7CitMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X2dldHRlcl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1dF9zZXR0ZXJfYnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBl
YmQzNmJhY2VkZDRlMDM4MTQwMTYyOWY5NmExMTY1YTFlN2U5MzY2Li5hNjAyYWJmMDMyODJiMTIw
ZDNjNjFjZWY3OTk2MWEyYTA5MDAxZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjE0LDYgKzYx
NCwxMyBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFm
dGVyU2xvd1BhdGgpCiAgICAgICAgIGVuZCkKIGVuZAogCittYWNybyB3cml0ZUJhcnJpZXJPbk9w
ZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgY2VsbEZpZWxkTmFtZSwgcmVsb2FkQWZ0ZXJTbG93
UGF0aCkKKyAgICBnZXQoY2VsbEZpZWxkTmFtZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKKyAg
ICB3cml0ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKHQyLCByZWxvYWRBZnRlclNsb3dQYXRoKQor
LndyaXRlQmFycmllckRvbmU6CitlbmQKKwogbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNp
emUsIGdldCwgY2VsbEZpZWxkTmFtZSkKICAgICBnZXQoY2VsbEZpZWxkTmFtZSwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQyLCAud3Jp
dGVCYXJyaWVyRG9uZSkKQEAgLTE2OTMsNiArMTcwMCw0OCBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQs
IGRpcwogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRf
cHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdl
dCwgbV9iYXNlLCBtX3ZhbHVlKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0UHJpdmF0ZU5h
bWVTbG93KQorICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykK
KyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRh
dGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJp
dmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEs
IC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgor
ICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElE
CisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRy
YW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAg
IHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3Jv
ICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEo
dDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFz
ZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBD
ZWxsVGFnLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGVuZCkKKworLm9wUHV0Tm90
VHJhbnNpdGlvbjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3
aGljaCBob2xkcyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIsIHQzKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5h
bWU6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQodDEsIHQwLCB0MiwgdDMpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRl
TmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVf
bmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFt
ZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDZmZTE3MzA3OGNhYzNjMWNjMTkxNDgw
NjM2ZDI3N2ViYmZhYTM1NDMuLmZhZmY3NDIzZmExNTVjYTUyOGM3NWQ4YzQ5YTZmZmM0YjM4YThm
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCkBAIC0xNzM0LDYgKzE3MzQsNDkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0
X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisg
ICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNp
emUsIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikK
KyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0
NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFB1dFBy
aXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
cHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBvYmplY3QgYmFz
ZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+IG1ldGFkYXRh
CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJ
RFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisgICAgc3RvcmVp
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5k
V2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAgIyBSZWxvYWQg
bWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAgICAgICMgUmVs
b2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCisgICAgZW5kKQorCisub3BQdXROb3RUcmFu
c2l0aW9uOgorICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNo
IGhvbGRzIHRoZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRh
ZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFz
ZSwgbV92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRp
c3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2Mzc3YjRkZWIyNzg0
YWU4M2UzNTUxZWU2MzZlZWFiODJlMTgwYTkzLi42NTFjYjljYWE4M2I1MDlhZmE1NTBiZDc5M2Y3
YzdiNDFkMjg3MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRQcml2YXRl
RmllbGRTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIGlubGluZSBib29sIGdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgaW5saW5lIHZvaWQgcHV0UHJp
dmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgdm9pZCBzZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIGlubGlu
ZSB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0
aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCmluZGV4IDk1NDVjMWUxOTUxYThjZThkNzNhYTAwMTE5YjVjODI0ZjNiZDhlMWYuLjZj
NTM5ZmNlMzM0ZGM2YTRlYmRkYzI5OGM0YjBiMTBkZjU3MzExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC02MTcsNyArNjE3LDcg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCkKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90
KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTEyMzc3YTli
MTNlOTFiZmYzY2EwNzJkMmQzNzkwNmY5ZTZjYjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisqCisqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtp
bmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsK
Kwordm9pZCBQcml2YXRlRmllbGRQdXRLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Cit7CisgICAgaWYgKGlzU2V0KCkpCisgICAgICAgIG91dC5wcmludCgiU2V0Iik7CisgICAgZWxz
ZQorICAgICAgICBvdXQucHJpbnQoIkRlZmluZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1
dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtp
bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYmNkYzRjYTMwNDhlYzdkYTAxZGJhMGQwYWFmYzg0YmI1Njc1MmUz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0
ZUZpZWxkUHV0S2luZC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJ
Z2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3Bh
Y2UgV1RGIHsKK2NsYXNzIFByaW50U3RyZWFtOworfTsKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0
cnVjdCBQcml2YXRlRmllbGRQdXRLaW5kIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qg
Tm9uZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFNldCA9IDE7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IERlZmluZSA9IDI7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJl
dHVybiBQcml2YXRlRmllbGRQdXRLaW5kKGJ5dGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQ
cml2YXRlRmllbGRQdXRLaW5kIG5vbmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKE5v
bmUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIHNldCgpIHsg
cmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoU2V0KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
UHJpdmF0ZUZpZWxkUHV0S2luZCBkZWZpbmUoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5k
KERlZmluZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID09IE5vbmU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXQoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlID09IFNldDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0RlZmluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gRGVmaW5lOyB9CisgICAgQUxXQVlT
X0lOTElORSB1aW50OF90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAg
dm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25z
dGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCh1aW50OF90IHZhbHVlKQorICAgICAgICA6IG1fdmFs
dWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZSA9PSBOb25lIHx8IG1fdmFs
dWUgPT0gU2V0IHx8IG1fdmFsdWUgPT0gRGVmaW5lLCBtX3ZhbHVlKTsKKyAgICB9CisKKyAgICB1
aW50OF90IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzkyNTQyZjkyZTVmN2Fi
MDJhYmM3YTdkM2MxODk0NjZiN2Q0ZGUwYS4uZGU3ZWY1YmJmMzJmOTQ0NDNmYzBjMWIwMjQ2N2Q0
ODhhMTcyODVlOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wOS0xNyAgQ2FpbyBMaW1hICA8dGljYWlv
bGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ11bRVNOZXh0XSBDcmVhdGUgYSBuZXcgb3Bj
b2RlIHRvIGhhbmRsZSBwcml2YXRlIGZpZWxkcyBzdG9yZS9kZWZpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdGluZyB0ZXN0cyB0aGF0IGVt
aXQgYGdldF9wcml2YXRlX25hbWVgIHRvIGF2b2lkIGV4ZWN1dGlvbiBpbgorICAgICAgICBGVEwv
REZHLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3Bv
bHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanM6IEFkZGVk
LgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVibGljLWZpZWxk
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHV0LXB1YmxpYy1maWVsZC5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJh
cnJpZXItaW5zZXJ0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZnLXB1dC1wcml2
YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5h
bWUtYnktaWQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5
LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10cmFzaXRpb24uanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQt
Ynktb2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1j
b25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1j
aGVjay1zdHJ1Y3R1cmUtbWlzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1p
ZGVudGlmaWVyLmpzOiBBZGRlZC4KKwogMjAyMC0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhp
Yy1wdXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFjNmM4YzQ5YmRlZDJlMmJjYjM3Njc3ZjQ2NTQxNTUxYjg2ZDU1NjIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9y
cGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDI2IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZh
bHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gMDsK
KworbGV0IGMyID0gbmV3IEMoKTsKK2MyLmJhciA9IDA7CisKK2xldCBjMyA9IG5ldyBDKCk7Citj
My5iYXogPSAwOworCitsZXQgYXJyID0gW2MxLCBjMiwgYzNdOworCitmb3IgKGxldCBpID0gMDsg
aSA8IDUwMDAwMDA7IGkrKykgeworICAgIGFycltpICUgYXJyLmxlbmd0aF0uc2V0RmllbGQoaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1w
cml2YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2Mjhk
Mzg4YmIwNTBiNjJlNjU5OGJmN2M4M2FmYTQ4ODYwODUyOQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRlLWZp
ZWxkLmpzCkBAIC0wLDAgKzEsMTYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworY2xh
c3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhp
cy4jZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsr
KSB7CisgICAgYy5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEz
MmZjZmM1NTRlNDhlZjQ3NTM3NzFjMzk1ZmIyZWU4ZWE2NWU5NQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanMK
QEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQyB7CisgICAgZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2
YWx1ZSkgeworICAgICAgICB0aGlzLmZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gMDsK
KworbGV0IGMyID0gbmV3IEMoKTsKK2MyLmJhciA9IDA7CisKK2xldCBjMyA9IG5ldyBDKCk7Citj
My5iYXogPSAwOworCitsZXQgYXJyID0gW2MxLCBjMiwgYzNdOworCitmb3IgKGxldCBpID0gMDsg
aSA8IDUwMDAwMDA7IGkrKykgeworICAgIGFycltpICUgYXJyLmxlbmd0aF0uc2V0RmllbGQoaSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmll
bGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2ZmNjZTJlZjY0MTY0ODNlNjIyNzNjOGY1MDQ1ZWI0NDE2ODVlNzQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzCkBA
IC0wLDAgKzEsMTMgQEAKK2NsYXNzIEMgeworICAgIGZpZWxkOworCisgICAgc2V0RmllbGQodmFs
dWUpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBjLnNldEZpZWxkKGkpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRp
b24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVy
LWluc2VydGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjVlNjMwNTU3OGRlZjY4YjRlMjZmZmY4ZTcxY2Y5
ZTBiOTQ4ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2
YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMKQEAgLTAsMCArMSw2OSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlz
dFNpemU9MiIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbihhLCBl
KSB7CisgICAgICAgIGlmIChhICE9PSBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czog
ZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlv
bjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
dGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBi
dXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsK
KworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgewor
ICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkg
PSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09
PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9
PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlz
WyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb2xkT2JqZWN0
ID0gbmV3IEM7Citmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDUwMDApIHsK
KyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoaSA9PSA1MDAwKQorICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAg
b2xkT2JqZWN0LnNldEZpZWxkKHtwcm9wOiBpfSk7CisgICAgICAgIGVkZW5HQygpOworICAgICAg
ICBhc3NlcnQuc2FtZVZhbHVlKG9sZE9iamVjdC5nZXRGaWVsZCgpLnByb3AsIGkpOworICAgIH0K
K30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29t
cGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNl
YzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1p
ZC1kaXJlY3QuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAi
LS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAg
bGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rvcigp
OworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAo
IWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dz
OiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0K
K30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsK
KworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAyIiwgInAzIl07CisK
KyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNba2V5XSA9IGk7Cisg
ICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsKKwor
ICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlzWyJwMSJdID0gaTsK
KyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0
RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBs
ZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNldEZpZWxkLmNhbGwoe30p
OworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRGaWVsZChpKTsKK30KKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQt
YXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGNlYzhhZGJjNDgxNGEzNjBjYzgzNTgwN2QwZGE5MWU1MmQxNzJhNwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1
dC1wcml2YXRlLW5hbWUtYnktaWQuanMKQEAgLTAsMCArMSw1NCBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiLCAiLS1tYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemU9MiIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3Ip
IHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAg
ICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBi
dXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhy
ZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRo
cm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlv
biIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0
aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBbInAxIiwgInAy
IiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAgICAgIHRoaXNb
a2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAgICB0aGlzWyJw
MSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAgICAgICB0aGlz
WyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAgICB9CisgICAg
fQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQor
fQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGlmIChpID4gNTAwMCkgeworICAgICAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjLnNldEZp
ZWxkLmNhbGwoe30pOworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYy5zZXRGaWVs
ZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1i
eS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0
aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA4ZDZlNDUzNjRiMDJiNDM1NTRlZDM2MmQ0YWE4ZGUxMGJjNDdm
YTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5
LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10cmFzaXRpb24uanMKQEAgLTAsMCArMSw1MCBA
QAorLy9AcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rv
cikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAi
IGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0
aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0
aW9uIik7CisgICAgfQorfQorCitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAg
cmV0dXJuIHt9OworICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjZmllbGQg
PSAwOworCisgICAgZ2V0RmllbGQoY2hhbmdlUmVjaWV2ZXIpIHsKKyAgICAgICAgbGV0IHIgPSB0
aGlzOworICAgICAgICBpZiAoY2hhbmdlUmVjaWV2ZXIpIHsKKyAgICAgICAgICAgIHIgPSB7fTsK
KyAgICAgICAgfQorCisgICAgICAgIHIuI2ZpZWxkID0gJ2Jhcic7CisgICAgfQorfQorbm9Jbmxp
bmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA8IDkwMDApCisgICAgICAgIEMucHJv
dG90eXBlLmdldEZpZWxkLmNhbGwoYywgZmFsc2UpOworICAgIGVsc2UgeworICAgICAgICBhc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgQy5wcm90b3R5
cGUuZ2V0RmllbGQuY2FsbChjLCB0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLXN0cnVjdHVyZS1t
aXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUt
bWlzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY5NWExYWRlMzc2OWM2MTRkZGM5MzAxMzJlYWY4OGUyMWVj
MmRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1j
aGVjay1zdHJ1Y3R1cmUtbWlzcy5qcwpAQCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsK
KworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgewor
ICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7Cisg
ICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
Z2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0
LXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0
YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMmZhYTg5
MWFlNDE0MDFlZWFjZmRhZWQ4MzVmNGU0MmRmNGU1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQt
Ynktb2Zmc2V0LmpzCkBAIC0wLDAgKzEsNTcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxv
d1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwg
Ii0tdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7
CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIg
KyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVyYXRpb25zID0gMTAwMDAwOworbGV0IHRyaWdnZXJD
b21waWxhdGlvbiA9IGZhbHNlOworbGV0IGNvbnN0cnVjdERpZmZlcmVudCA9IGZhbHNlOworY2xh
c3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAg
ICBpZiAoY29uc3RydWN0RGlmZmVyZW50KQorICAgICAgICAgICAgdGhpcy5mb28gPSAwOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtZXRob2Qoaiwgb3RoZXIpIHsKKyAgICAgICAg
bGV0IGMgPSAwOworICAgICAgICBsZXQgb2JqID0gdGhpczsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwgaXRlcmF0aW9uczsgaSsrKQorICAgICAgICAg
ICAgYysrOworICAgICAgICBpZiAoaiAlIDIpIHsKKyAgICAgICAgICAgIG90aGVyLmZvbyA9IGo7
CisgICAgICAgICAgICBvYmogPSBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICBvYmouI2ZpZWxk
ID0gYzsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Zp
ZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLm1ldGhvZCk7Citub0lubGluZShD
LnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZU
TChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBvdGhlckMgPSBuZXcgQygpOworCitjb25z
dHJ1Y3REaWZmZXJlbnQgPSB0cnVlOworCitmb3IgKGxldCBpID0gMDsgaSA8IDMwOyBpKyspIHsK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2QoaSwgb3RoZXJDKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJDb21waWxhdGlvbiA9
IHRydWUKK2xldCBjID0gbmV3IEMoKTsKK2MubWV0aG9kKDAsIG90aGVyQyk7Cithc3NlcnQuc2Ft
ZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRv
LXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcyMGVjODA0YTk0ZjcxZTM1OGVhN2FhZTZh
NmZlOGRlZTI1ODU1MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzCkBAIC0wLDAgKzEs
MzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIs
ICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFs
c2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaXRlcmF0aW9ucyA9
IDEwMDAwOworbGV0IHRyaWdnZXJDb21waWxhdGlvbiA9IGZhbHNlOworY2xhc3MgQyB7CisgICAg
I2ZpZWxkID0gMDsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgbGV0IGMgPSAwOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0aW9uICYmIGkgPCBpdGVyYXRpb25zOyBp
KyspCisgICAgICAgICAgICBjKys7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gYzsKKyAgICB9CisK
KyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgIGMubWV0aG9kKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDApOworfQorCit0cmlnZ2VyQ29tcGlsYXRpb24g
PSB0cnVlCitjLm1ldGhvZCgpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJh
dGlvbnMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdl
bmVyaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmQ2YzI5OWM2NjI3MGJhYmNhM2QwMDdiN2E3ODMwOTc3Mjc5NGQ1MQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpA
QCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRp
ZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBl
KSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oZHluYW1pY1By
b3BlcnR5KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOwor
ICAgIAorICAgICAgICBpbml0KCkgeworICAgICAgICAgICAgdGhpc1tkeW5hbWljUHJvcGVydHld
ID0gZHluYW1pY1Byb3BlcnR5OworICAgICAgICB9CisKKyAgICAgICAgc2V0RmllbGQodikgewor
ICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAg
ICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5s
aW5lKGNsYXNzRGVjbGFyYXRpb24pOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgQ2xhc3MgPSBjbGFzc0RlY2xhcmF0aW9uKCdwcm9wZXJ0eScgKyBpKTsKKyAg
ICBsZXQgYyA9IG5ldyBDbGFzcygpOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1
OThlNzAxOWQzNzRkNjBhYTlkN2NkYTljZjU0MmI3MTY3ZjNiNAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanMKQEAgLTAs
MCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9y
KSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAg
ICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIg
YnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRo
cmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0
aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRp
b24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRPdmVycmlkZVJldHVybiA9IGZhbHNlOworbGV0
IG9iajsKKworY2xhc3MgQiB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChzaG91
bGRPdmVycmlkZVJldHVybikKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIHJldHVy
biB0aGlzOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEIgeworICAjZmllbGQgPSAndGVz
dCc7CisKKyAgZ2V0RmllbGQoKSB7CisgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgIH0KK30K
K25vSW5saW5lKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQp
Oworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAw
KSB7CisgICAgICBzaG91bGRPdmVycmlkZVJldHVybiA9IHRydWU7CisgICAgICBvYmogPSB7fTsK
KyAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5wcm90b3R5
cGUuZ2V0RmllbGQuY2FsbChvYmopLCAndGVzdCcpOworICAgICAgYXNzZXJ0LnNob3VsZFRocm93
KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICAgIG5ldyBDKCk7CisgICAgICB9KTsKKyAgfSBl
bHNlIHsKKyAgICAgIGxldCBvYmogPSB7fTsKKyAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgICAgYXNzZXJ0LnNo
b3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICAgIGMuZ2V0RmllbGQuY2FsbChv
YmopOworICAgICAgfSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtaW52YWxpZC1zdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzQ3Y2VhNjAwMDVhOWI1Zjg2OGEw
YjUzYmYyMWQ3NWMyNGZiYjA4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hv
dWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhy
ZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0
YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBl
Lm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCits
ZXQgc2hvdWxkU3RvcmUgPSBmYWxzZTsKKworZnVuY3Rpb24gZm9vKCkgeworICBjbGFzcyBDIHsK
KyAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAjZm9vOworCisgICAgaW5pdCgpIHsKKyAg
ICAgIGlmIChzaG91bGRTdG9yZSkKKyAgICAgICAgdGhpcy4jZm9vID0gMTI7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIG5ldyBDKCk7Cit9Citub0lubGluZShmb28pOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgaWYgKGkgPiAxMDAwKSB7CisgICAgc2hvdWxkU3RvcmUg
PSB0cnVlOworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAg
IGZvbygpOworICAgIH0pOworICB9IGVsc2UgeworICAgIGZvbygpOworICB9Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQt
d2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzMzMTRmYTllNzA0OWYxYjgwYjAyZmMwYTcxOTU0N2U3YTIxZGI5MAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13
aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDY5IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQg
ZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZhY3Rv
cnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAg
IAorICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7Cisg
ICAgICAgIH0KKyAgICAKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4g
dGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RG
RyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdm
b28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7
Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOworCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fz
c2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKK2MyLnNldEZpZWxkKCdmb28n
KTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuZ2V0RmllbGQoKSwgJ2ZvbycpOworCitsZXQgYyA9IG5l
dyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYy5zZXRGaWVs
ZC5jYWxsKGMyLCAndGVzdCcpOworfSk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9
PiB7CisgICAgYzIuc2V0RmllbGQuY2FsbChjLCAndGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFu
dC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGlj
LXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZmM1MzY0Y2E5ZTAyY2U5NTIz
YmFjNDE1YzE4MDE0NmUxNTY4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0w
LDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9
dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiAr
IGEpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSB0
aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAg
ICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9
CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisK
KyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwg
J3Rlc3QnKTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLmdldEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3YTMyOTdiZWQ4MmQ3YzBjN2U1MmQ1NWE3NWU1YWMyMTE4MWI3Y2IKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0KK30KKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gJ3Rlc3Qn
OworCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQor
CisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9
Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3Qn
KTsKKyAgICBjLnNldEZpZWxkKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdl
dEZpZWxkKCksICdmb28nICsgaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZDM3ZDgxN2VkZTE0YTIwMzVmMzVhNjg4YmE0MTVkYTE1ZmQzNzI5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWRpZmZlcmVudC1p
ZGVudGlmaWVyLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxv
d1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAg
ICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
ZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY2xhc3NEZWNsYXJh
dGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkOworICAgIAorICAgICAgICBz
ZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKwor
ICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAg
ICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVy
biBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlvbik7CitsZXQgQzEgPSBjbGFzc0RlY2xh
cmF0aW9uKCk7CitsZXQgQzIgPSBjbGFzc0RlY2xhcmF0aW9uKCk7CisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gaSAlIDIgPyBuZXcgQzEgOiBuZXcgQzI7
CisgICAgYy5zZXRGaWVsZCgndGVzdCcgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgJ3Rlc3QnICsgaSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409281</attachid>
            <date>2020-09-21 09:52:20 -0700</date>
            <delta_ts>2020-09-21 19:12:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200921135211.patch</filename>
            <type>text/plain</type>
            <size>168557</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2FmMDRhZDM3ZWNlYWI4ZTNlNzY3MmEyOTJmZjdiMGE3M2I0NTJlLi44OTRmYTNmNjFmYTU0ZjRh
ODJlNmFkZTg5MDQ0ZGFjZTVjNjQwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMjAtMDktMjEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0cyBvcGVyYW5kcworICAgICAgICBgYmFzZU9iamVjdGAgd2hlcmUgdGhlIHB1dCBpcyBn
b2luZyB0byBiZSBwbGFjZWQsIHRoZSBgcHJvcGVydHlgCisgICAgICAgIHRoYXQncyBnb2luZyB0
byBiZSBpbnN0YWxsZWQgKGl0IGlzIGFsd2F5cyBhIHByaXZhdGUgc3ltYm9sIG9mIGEKKyAgICAg
ICAgcHJpdmF0ZSBmaWVsZCksIHRoZSBgdmFsdWVgIHdlIGFyZSBnb2luZyB0byBzdG9yZSBhbmQg
dGhlCisgICAgICAgIGBQcml2YXRlRmllbGRQdXRLaW5kYCB0aGF0IGNhbiBiZSBgRGVmaW5lYCBv
ciBgU2V0YC4KKyAgICAgICAgVGhlIGRpZmZlcmVuY2Ugb2YgZWFjaCBgUHJpdmF0ZUZpZWxkUHV0
S2luZGAgaXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgCisgICAgICAgIC0gRGVmaW5lOiBJdCBk
ZWZpbmVzIGEgbmV3IHByaXZhdGUgZmllbGQuIElmIHRoaXMgZmllbGQgaXMgYWxyZWFkeQorICAg
ICAgICBwcmVzZW50LCBpdCB0aHJvd3MgYSBgVHlwZUVycm9yYC4KKyAgICAgICAgLSBTZXQ6IEl0
IHNldHMgdGhlIHZhbHVlIG9mIGEgcHJpdmF0ZSBmaWVsZC4gSWYgdGhlIGZpZWxkIGlzIG5vdAor
ICAgICAgICBwcmVzZW50IGF0IHRoZSBtb21lbnQgb2Ygc2V0LCBpdCB0aHJvd3MgYSBgVHlwZUVy
cm9yYC4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHN1cHBvcnQgb2YgSUMgZm9yIGFs
bCB0aWVycy4gRm9yIERGRyBhbmQgRlRMLCB3ZQorICAgICAgICBhcmUgb25seSBlbW1pdGluZyBJ
QyB3aGVuIHdlIGFyZSBhYmxlIHRvIGVtaXQgYENoZWNrQ29uc3RhbnRgCisgICAgICAgIGZvciBz
dWJzY3JpcHQgaWRlbnRpZmllciBkdXJpbmcgQnl0ZWNvZGUgcGFyc2luZy4gV2UgYXJlIGFkZGlu
ZyBhIG5ldworICAgICAgICBERkcgbm9kZSBjYWxsZWQgYFB1dFByaXZhdGVOYW1lQnlJZGAgdGhh
dCBoYW5kbGVzIHN1Y2ggY2FzZXMgd2hlbiB3ZQorICAgICAgICBoYXZlIGNvbnN0YW50IGlkZW50
aWZpZXJzLgorICAgICAgICBXZSBhcmUgYWxzbyBhZGRpbmcgYSBuZXcgREZHIG5vZGUgYFB1dFBy
aXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBjYXNlIG9mIGBwdXRfcHJp
dmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQorICAgICAgICBgcHV0X3By
aXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBhcmUgdXNpbmcgd2l0aAor
ICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRyeSB0byBjb21waWxlIGl0
IGFzIGBbTXVsdGldUHV0QnlPZmZzZXRgCisgICAgICAgIHVzaW5nIHByb2ZpbGVkIGluZm9ybWF0
aW9uIGZyb20gTExJbnQgYW5kIEJhc2VsaW5lIGV4ZWN1dGlvbi4gSWYgaXQKKyAgICAgICAgaXMg
bm90IHBvc3NpYmxlLCB3ZSB0aGVuIGVtaXQgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBX
ZSBnZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFt
ZUJ5SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0
cnVjdHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6Cisg
ICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRl
TmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAg
ICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjp0cnlGb2xkQXNQdXRCeU9mZnNl
dCk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpw
cml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8p
OgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVB1dFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAg
ICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRv
cjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChK
U0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVk
LgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0UHJp
dmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2Fj
aGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpz
ZXQpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc05vbmUgY29uc3QpOgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjppc1NldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVGaWVsZFB1dEtpbmQ6OmlzRGVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZp
ZWxkUHV0S2luZDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRL
aW5kOjpQcml2YXRlRmllbGRQdXRLaW5kKToKKwogMjAyMC0wOS0yMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIERyb3AgT3B0aW9uczo6dXNlQmln
SW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0ZDg5
NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYwOGU3
MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3LDcg
KzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgK
ICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
aAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL09w
dGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQu
aAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2YXRl
TmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODQyMDZl
N2NhZmUzZGY4YmY4YTI5NzMxZDkwMzUzYzQ0ZGEwOWI4Li5mM2JmYWUxOWIxODJjYjUyNzRiZTYx
MjE5MmQ4NTM2MDZiM2MwZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1
NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0
QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0NjdF
MDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAw
MTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZF
NUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAogCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVD
MiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQx
NDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxl
ckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRCODlF
QTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMTEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyog
TWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERG
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTQsOCArNDE1NCw2IEBACiAJCTg2NzA0
QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBh
dHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFy
ci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNjIz
NDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZh
bEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1QjMw
MEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFs
RmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDE3NSw2ICs0MTczLDggQEAKIAkJODZBREQxNDQwRkRERUE5
ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGllcmVk
TU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1NYXBB
cnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlRmll
bGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRCOEEy
MDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVy
TUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlck1J
UFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MzAsNiArNzYzMCw4IEBACiAJ
CQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0UyMEJE
MDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5j
cHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAvKiBQ
cml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUg
LyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAvKiBQ
cm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJBIC8q
IFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NTAxLDggKzg1MDMsNiBAQAogCQkJCTBGOTMz
MjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0QTcx
OEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRBODE4
QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIzNDY0
NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBE
NTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBS
ZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyog
UmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMzksNiArMTAyMzksNyBAQAogCQkJCUNFMjBC
RDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2ZW50
Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFFMDAx
MDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVBNDAw
NDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkx
NkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAyNzksNyArMTAyODAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMxRkZE
MyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRBQTE4
QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2
NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5
U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNmY4
ZTI3MTk3MjEzNTU1MTIzOGE3Yjg0NzExYTE1Njc1MDljMzM0MC4uYzVlMmE2NmJjNzIxZTEwNTAz
ZjE1NWVmNjYxNTZkMGE5MGRkM2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAt
MjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29k
ZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0NCw2ICs5NDMsNyBAQCBydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAKIHJ1bnRpbWUvT3B0aW9ucy5j
cHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcAorcnVudGlt
ZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAK
IHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRv
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CmluZGV4IDJhZjk3NTc3MzIzOWRkMDhkNDkzNDM3NmIyMGI2MzIzZGQ0YmU1YzEuLjQxYWQ3ZjRi
NzRhZDcyNTVkZDUxNjBhYzc3YmI2YzgwM2EzZTljMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDYsMTAgKzQ2LDEwIEBAIHR5cGVz
IFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJlc3VsdFR5cGUsCiAgICAgOk9wZXJh
bmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwKICAgICA6UHJvZmlsZVR5cGVCeXRl
Y29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCi0gICAg
OlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAg
OlN0cnVjdHVyZUlELApAQCAtNTc0LDYgKzU3NCwyMCBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwK
ICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLAogICAgIH0KIAorb3AgOnB1
dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFByaXZhdGVGaWVsZFB1dEtpbmQsCisg
ICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDogU3RydWN0dXJl
SUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICAgICAgb2Zm
c2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAg
IH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFs
UmVnaXN0ZXIsCkBAIC01OTksNyArNjEzLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAg
ICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZsYWdzOiBQ
dXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDI5
ZTdhMTNlZjdiMWQ2MDVlOTgxYTZiZWVhNDA4OTc2YjIyY2ViODcuLjQ2MGU5NzMwMTY2OTNiMTI0
NDVlNDFiMmY4MjlhNmE1ZjZmNzY1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI3LDYgKzIyNyw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3Rl
ciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0b3JHZW5lcmljUG5hbWUsIGVudW1l
cmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAg
VVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wUHV0UHJp
dmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFz
ZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3Rv
ciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3Rv
dHlwZSkKQEAgLTM5NSw2ICszOTYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRl
eEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIGNh
c2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFf
cHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDg0ZjMyNzBjMjk4
MjhkNDZhZmQyMTZmZTMyM2EwMzZhYWE0ODcwNmMuLmZmMmFkZWNmZjI1Y2Y1MTU5Mjk0YzVhYTJk
ZDAxZjQ4YjY3OTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC01NDIsNiArNTQyLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgTElOSyhPcEluQnlWYWwpCiAgICAgICAgIExJTksoT3BQdXRCeVZhbCkKICAgICAgICAg
TElOSyhPcFB1dEJ5VmFsRGlyZWN0KQorICAgICAgICBMSU5LKE9wUHV0UHJpdmF0ZU5hbWUpCiAK
ICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6
ZSkKQEAgLTExMzYsNiArMTEzNywyNSBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImIHZpcwogICAgICAg
ICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCiAgICAgICAgICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0
ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVy
ZUlEOworICAgICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgIW5ld1N0cnVjdHVy
ZUlEKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBKU0Nl
bGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtl
ZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAg
aWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzMDIsNiArMTMyMiwyMiBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0
cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCisgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAg
ICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEOworICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRh
Lm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2
bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1
cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtl
ZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5o
ZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJ
RCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHB1dF9wcml2YXRlX25hbWUg
dHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAw
OworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICAgICAgbWV0YWRh
dGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5
LmNsZWFyKCk7CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BU
b1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggMzlm
ZWUwYTY2OWEyODI2NTg1YTJhNDkyMmEzODJiZjZiOGEwYWFlMy4uZTA1YTI1NjQ4YTEzYjA1OTcy
ZjY2NGMzN2RlMDhjZDNjODk0OTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJMYWJlbC5oIgogI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNs
dWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVk
ZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0yNTgsNDYgKzI1OCw2IEBAIHN0cnVjdCBG
aXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KLXN0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNpemU+IHsKLSAgICB1c2luZyBU
YXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwotCi0g
ICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29k
ZWQgYXM6Ci0gICAgLy8gICAgICAgICAgaXNTdHJpY3QKLSAgICAvLyAgICAgICAgICAgICB2Ci0g
ICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKLSAgICAvLyAgICAgICAgICAgXgotICAg
IC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3Jl
YXRlIH0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0gMTI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQgPSAyOwotCi0gICAgc3Rh
dGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBm
bGFncykKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihmbGFncy5pc0RpcmVjdCgpKTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGF1dG8gcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoKSk7Ci0gICAgICAgIHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBp
c0RpcmVjdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdl
dFR5cGUgZ3BpKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJv
b2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwotICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7Ci0gICAgICAgIGF1dG8gYWNjZXNzID0g
c3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKLSAgICAg
ICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1v
ZGU6OnNsb3BweSgpOwotICAgICAgICByZXR1cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmUgPwotICAgICAgICAgICAgaXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVh
dGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6Ci0g
ICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlW
YWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6
OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSk7Ci0gICAgfQotfTsKLQogdGVtcGxh
dGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxF
Piwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIHNpemU+OwpAQCAtNDI3LDQgKzM4NywyNCBAQCBzdHJ1Y3QgRml0czxFQ01BTW9kZSwgc2l6
ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8
T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHJpdmF0ZUZpZWxkUHV0S2luZCwgc2l6ZT4g
OiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWlu
dDhfdCwgc2l6ZT47CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhQcml2YXRlRmllbGRQdXRLaW5k
IHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y2hlY2socHV0TW9kZS52YWx1
ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252
ZXJ0KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBC
YXNlOjpjb252ZXJ0KHB1dE1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIFByaXZh
dGVGaWVsZFB1dEtpbmQgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHB1dE1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUoQmFz
ZTo6Y29udmVydChwdXRNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5k
ZXggNGYzOTRmMDFkMDViMzBmNDg1OWQ1YTQ1MmE1NzdjNGQyZWM1MWY4YS4uOGJjMTdjODY0NmJj
NzBiZGJlNGZiZWY5YTY5N2M4YzlmYjU4NmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgQnl0ZWNvZGUKICAgICBWTSYgdm0gPSBwcm9maWxlZEJsb2NrLT52bSgpOwogICAg
IAogICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKKworICAgIC8vIFdlIGFyZSBub3QgeWV0IHVzaW5n
IGBjb21wdXRlRnJvbUxMSW50YCBpbiBhbnkgcGxhY2UgZm9yIGBwdXRfcHJpdmF0ZV9uYW1lYC4K
KyAgICAvLyBXZSBjYW4gYWRkIHN1cHBvcnQgZm9yIGl0IGlmIHRoaXMgaXMgcmVxdWlyZWQgaW4g
ZnV0dXJlIGNoYW5nZXMsIHNpbmNlIHdlIGhhdmUKKyAgICAvLyBJQyBpbXBsZW1lbnRlZCBmb3Ig
dGhpcyBvcGVyYXRpb24gb24gTExJbnQuCisgICAgQVNTRVJUKCFpbnN0cnVjdGlvbi0+aXM8T3BQ
dXRQcml2YXRlTmFtZT4oKSk7CisKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlJZD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHBy
b2ZpbGVkQmxvY2spOwogCkBAIC0yNzEsNyArMjc3LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IGIKICAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0
ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBi
b29sIGlzRGlyZWN0KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHBy
aXZhdGVGaWVsZFB1dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMjk0LDYgKzMwMCwxMiBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU3RydQogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwog
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRs
eSh1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7
CisgICAgICAgICAgICAvLyBXZSBjYW4ndCBoYXZlIGEgdmFsaWQgb2Zmc2V0IGZvciBzdHJ1Y3R1
cmVzIG9uIGBQdXRQcml2YXRlTmFtZUJ5SWRgIGRlZmluZSBtb2RlCisgICAgICAgICAgICAvLyBz
aW5jZSBpdCBtZWFucyB3ZSBhcmUgcmVkZWZpbmluZyBhIHByaXZhdGUgZmllbGQuIEluIHN1Y2gg
Y2FzZSwgd2UgbmVlZCB0byB0YWtlIAorICAgICAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5l
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CisKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yT3JWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhN
YWtlc0NhbGxzKTsKIApAQCAtMzE2LDcgKzMyOCwxNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
dQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAgICAgICAvLyBXZSBj
YW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0IG1vZGUgYW5kIGl0
CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0cmFuc2l0aW9uIGJl
Y2F1c2UgaXQgbWVhbnMgd2UgYXJlCisgICAgICAgIC8vIHRyeWluZyB0byBzdG9yZSBpbiBhIG5v
dCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4gV2UgbmVlZCB0byB0YWtlCisgICAgICAgIC8vIHNs
b3cgcGF0aCB0byB0aHJvdyBleGNwZXRpb24gaWYgaXQgZXZlciBnZXRzIGV4ZWN1dGVkLgorICAg
ICAgICBpZiAocHJpdmF0ZUZpZWxkUHV0S2luZC5pc1NldCgpKQorICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisKICAgICAgICAgLy8gT3VyIGh5cG90aGVz
aXMgaXMgdGhhdCB3ZSdyZSBkb2luZyBhIHRyYW5zaXRpb24uIEJlZm9yZSB3ZSBwcm92ZSB0aGF0
IHRoaXMgaXMgcmVhbGx5CiAgICAgICAgIC8vIHRydWUsIHdlIHdhbnQgdG8gZG8gc29tZSBzYW5p
dHkgY2hlY2tzLgogICAgIApAQCAtMzMxLDYgKzM1MCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
dHJ1CiAgICAgCiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNl
dDsKICAgICAgICAgaWYgKCFpc0RpcmVjdCkgeworICAgICAgICAgICAgQVNTRVJUKHByaXZhdGVG
aWVsZFB1dEtpbmQuaXNOb25lKCkpOwogICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJh
dGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzQ29uY3VycmVudGx5KAogICAgICAgICAg
ICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkKTsKICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZl
Y2Q3MzkxN2ZkYTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhp
dEZsYWcuaCIKICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVs
ZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJ
bmZvU3VtbWFyeS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01h
cCYsIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxs
TGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21w
dXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29t
cHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAog
ICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJs
b2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250
ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVm
NjQwYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3Bh
Y2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxG
bGFncyBmbGFncykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxh
Z3MuaXNEaXJlY3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAg
aWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwg
IlByaXZhdGVGaWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkK
LSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlW
YWxGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNl
MzAyYmY5YzIzODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZs
YWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJT
dHJ1Y3R1cmVJRFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBD
cmVhdGUsCi19OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0K
LSAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVy
dHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEg
c2V0dGVyLgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3Qo
RUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0
cnVlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZs
YWdzIGNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0
ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFn
cyBjcmVhdGVQdXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFN
b2RlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rp
cmVjdDsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9k
ZTsgfQotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQ
cml2YXRlRmllbGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRl
RmllbGRQdXQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZh
bEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNE
aXJlY3QoaXNEaXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJl
Y3QodHJ1ZSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAg
ICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9p
c0RpcmVjdDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDsKLSAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2lu
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBk
NTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVm
YjBjNjJmYjRmNmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRLaW5kLmgKQEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0
S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVj
dFByaXZhdGVGaWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzMzI4ZjZhNDZkNzdkYjRkY2ZhM2M4
NGQ0MmJhNjc3YjVjMzAxNzI3Li5kZDllN2Y3OWY0ZWZjMTI5ZTg5YTc3Mjc0MGU0YTg4ODZlNzJh
NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI2LDcgKzI3MjcsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRo
aXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVj
bWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzUw
LDEzICsyNzUxLDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50
ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5
VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZh
dGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxE
aXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpj
cmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6
OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpz
ZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkw
MmYyMDcyYjYxNjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlm
NTYzZGNhNTAxYWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyAr
NDAyOSwyNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICAgICAgCisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJ
ZDoKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQ
dXRCeUlkRGlyZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgp
KSB7CisgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGly
ZWN0IHx8IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0
byBwcml2YXRlRmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQg
PyBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25l
KCk7CiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0
cnVjdHVyZVNldCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS51aWQoKSwKLSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwor
ICAgICAgICAgICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAg
ICAgICAgYm9vbCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1w
bGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA3ZmJhNTNiNWU3OTdhMTZhZjFiNzRhMzI2MjFhZDk5MDkzMTQyZjkxLi5lZTMz
N2ViMmZhOTNhMGUwZmYzOTg2OWU2YmU1OTZjNGIzYTMxZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVs
ZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlk
U3RhdHVzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5n
Q29uc3RydWN0b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2Rl
KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBO
b2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3Qs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRs
ZVB1dFByaXZhdGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRl
QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0
YXR1cywgRUNNQU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkK
LXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxX
QVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFs
RGlyZWN0IGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVC
bG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2Rl
SW5kZXgpOwpAQCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQ
cml2YXRlTmFtZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25z
dCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZh
dGVGaWVsZFB1dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwg
IXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5p
bmcoKSkgeworICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRl
TmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQp
LCBiYXNlLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1f
cGxhbi5pc0ZUTCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8
fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8
fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2
YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtp
bmQpLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAg
ICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAg
IAorICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7Cisg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVy
ZSk7CisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRy
YW5zaXRpb24pCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQ
dXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRk
KCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOwor
ICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAg
ICAgYWRkVG9HcmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1
cy5udW1WYXJpYW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50
ID0gcHV0QnlJZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7
CisgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJp
dmF0ZUZpZWxkUHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1
dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsK
KyAgICAKKyAgICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFs
dWUpOworICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAg
ICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFu
c2l0aW9uOiB7CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkp
OworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBo
KENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRp
dGlvblNldCgpKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNT
RVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVy
dHlTdG9yYWdlOworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3Ry
YW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQu
cmVhbGxvY2F0ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcg
dGhlIHByb3BlcnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAg
ICAgICAgIC8vIHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAg
ICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAg
ICAgICAgICAgaWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRv
R3JhcGgoCisgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcElu
Zm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAg
ICAgICAgICAgIGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
dmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFz
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBh
ZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
U3RvcmFnZUFjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRk
KCk7CisgICAgICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRh
dGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAg
ICAgLy8gTk9URTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291
bGQgaW5zZXJ0IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUg
YmVjYXVzZToKKyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdp
bGwgZ2V0IHNjYW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8v
ICAgdGhlIG9iamVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcg
dG8gcHV0IGlzIGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28K
KyAgICAgICAgLy8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQg
d2lsbCBzZWUgdGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2
YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2Uo
KSkKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwg
YmFzZSwgcHJvcGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVj
dHVyZSBnb2VzIGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRv
R3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBh
cmVUb1BhcnNlQmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzks
NTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAg
ICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAg
ICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29s
IHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAg
ICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRD
b2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2Vs
aW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0
aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLiBGb3IgYHB1dF9wcml2YXRlX25hbWVg
LCB3ZSBtaWdodCBoYXZlIHNvbWUgaW5mbyBmcm9tCisgICAgICAgICAgICAgICAgLy8gTExJbnQg
SUMsIGluY2x1ZGluZyBjYWNoZWQgY2VsbCB0aGF0IHdlIGNvdWxkIHVzZSBpZiBCeVZhbCBpcyBu
b3QgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTY3NzkKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAor
ICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAg
ICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAg
ICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlm
aWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZp
ZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25z
dGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBw
dXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50
Q29kZU9yaWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0KQorICAgICAgICAgICAgICAg
IGhhbmRsZVB1dFByaXZhdGVOYW1lQnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcElu
Zm8oKSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7
CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcml2YXRlX25hbWUpOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWZpbmVEYXRhUHJv
cGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7
CkBAIC03NTE4LDcgKzc2NzksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXM7CiAg
ICAgICAgICAgICAgICAgaWYgKHVpZCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVpZCwgZmFsc2UsIFByaXZhdGVGaWVsZFB1dEtp
bmQ6Om5vbmUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBz
dGF0dXMgPSBQdXRCeUlkU3RhdHVzKFB1dEJ5SWRTdGF0dXM6OlRha2VzU2xvd1BhdGgpOwogICAg
ICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAxCkBAIC04Mjk1LDcgKzg0
NTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRl
Y29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qs
IG9zckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKKyAgICAgICAgICAgIGhhbmRsZVB1
dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAg
IH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTgzMDYsNyArODQ2Nyw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBC
eXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3Bl
cnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSBy
b29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVj
dCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkp
LCBPcEluZm8oZWNtYU1vZGUoYnl0ZWNvZGUpKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6
VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJh
eU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBt
X2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0
cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1h
eSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMmRlNTVhZWQyN2MxZWEzNDZmOGQwYzVhY2Q2
NDY4ZGVhY2JmZTM1MC4uMTZlYTI1ZDNkN2RiYzFhMTJmMjljYzY3ZTMzYjI2NmRmNDk0N2U0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MjkzLDYgKzI5Myw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9zdXBl
cl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2Fz
ZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAg
ICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9z
dHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJp
bmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggY2ZlMWY4MTdhNTNmMjA2ZDI4ZjcwNzU3OWM4YzllNDdm
YWI4YmRiOC4uZDk1OWIwMWRlMGMxYzIxZTJmYjc4YzdjMjBiZDY3MGZlMWZkN2FiMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY3MCw2ICs2NzAsOCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAg
Y2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6
CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA1ZTJiZDljOTVlMDgyYjI4MDNj
ZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4wNThkY2JmZjljNjA0Y2IzZWM0YjZjODU5ZjEzY2U5OTU4
YzI4ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjU4LDEwMiArNjU4LDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICAgICAgICAgIGJvb2wg
aXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5v
ZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVj
dCwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNh
c2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOiB7Ci0gICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4g
PSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5j
aGlsZDEoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7
Ci0gICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS51aWQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBB
U1NFUlQoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9k
ZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKLQotICAgICAgICAgICAgICAgIGlmICghYmFz
ZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihvcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1
Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUo
KSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQo
c3RhdHVzLm51bVZhcmlhbnRzKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1W
YXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGFsbEdvb2QgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwotICAgICAgICAgICAgICAgIFRy
YW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBQ
dXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiA6
IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxp
ZGl0eShzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9y
VXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIG5vZGUt
Pm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNlbGxVc2UpKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICghYWxsR29vZCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50
LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy
YW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBuZXdTdHJ1
Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5hZGQobmV3U3RydWN0dXJl
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghYWxsR29vZCkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvLyBQdXNoIENGQSBvdmVyIHRoaXMg
bm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KLSAgICAgICAgICAgICAgICBtX2lu
dGVycHJldGVyLmRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsKLSAg
ICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jaGFuZ2VT
dHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgYWxy
ZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBm
b2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKLSAg
ICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJz
KCkuZW5zdXJlKHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygp
ID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9j
aywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJOdW1iZXIpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7Ci0KLSAgICAgICAgICAgICAgICBNdWx0
aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5h
ZGQoKTsKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cyA9IHN0YXR1cy52YXJpYW50cygp
OwotICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVt
YmVyOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQoZGF0
YSk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG5vZGUtPm9wKCkgPT0gUHV0QnlJ
ZERpcmVjdDsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQdXRCeU9mZnNldChub2RlLCBpbmRl
eEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgaXNEaXJlY3QsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSwgY2hhbmdlZCwgYWxyZWFkeUhhbmRsZWQpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0xNDcwLDYgKzEzODUsOTUgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIHRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KE5vZGUqIG5vZGUsIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgRWRnZSBiYXNlRWRnZSwg
RWRnZSB2YWx1ZUVkZ2UsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0
ZUZpZWxkUHV0S2luZCwgYm9vbCYgY2hhbmdlZCwgYm9vbCYgYWxyZWFkeUhhbmRsZWQpCisgICAg
eworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgTm9k
ZSogYmFzZU5vZGUgPSBiYXNlRWRnZS5ub2RlKCk7CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCk7CisKKyAgICAgICAgQVNT
RVJUKGJhc2VFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKworICAgICAgICBBYnN0cmFjdFZh
bHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShiYXNlTm9kZSk7CisgICAgICAgIEFic3Ry
YWN0VmFsdWUgdmFsdWVWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZSh2YWx1ZUVkZ2UpOworCisgICAg
ICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAorICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iob3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAorICAgICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAorICAg
ICAgICAgICAgaXNEaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQpOworCisgICAgICAgIGlmICgh
c3RhdHVzLmlzU2ltcGxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJU
KHN0YXR1cy5udW1WYXJpYW50cygpKTsKKworICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGNoYW5nZWQgPSB0cnVlOworCisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgbmV3U2V0OworICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRyYW5zaXRpb25zOworICAgICAg
ICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRp
dGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC53YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9u
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3RydWN0dXJlKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hl
Y2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLAorICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3du
Q2VsbFVzZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5k
KCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBBU1NF
UlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSB8fCBwcml2YXRlRmllbGRQdXRLaW5kLmlz
RGVmaW5lKCkpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0
dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAg
IFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJl
KSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0
QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcml2YXRlRmll
bGRQdXRLaW5kLmlzTm9uZSgpIHx8IHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7CisgICAg
ICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
KyAgICAgICAgbV9pbnRlcnByZXRlci5kaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgIG1f
aW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMp
OworICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5jaGFuZ2VTdHJ1Y3R1cmUo
bV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQorICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKKworICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERv
bid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhp
cy4KKworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQ
dXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgc3RhdHVzKSksCisgICAgICAgICAg
ICBFZGdlKGJhc2VOb2RlKSk7CisKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAgICAgICAgaWYgKHN0YXR1cy5u
dW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleElu
QmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1f
cGxhbi5pc0ZUTCgpKTsKKworICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1f
Z3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFu
dHMgPSBzdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9
IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIG5vZGUtPmNvbnZlcnRUb011bHRpUHV0QnlPZmZz
ZXQoZGF0YSk7CisgICAgfQorCiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKICAg
ICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJldGVy
OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5NjliNjkwZjEzZjZmZmJmYjdkNzU2YmIzY2Ey
MjA4Yzc5Li43ZGYzZDM1ZDQyNjI4ZGNkMDk0YmI1ZDdjOTdhMDE2MTY2NDM3MGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0
dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZh
bDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlk
OgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNl
IFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYwMTdlZTA2NzM0MTBlMDM4Li41ZWJhN2Qx
ZjJjNjhkMDRjOTFlZTYwMTQ5MWExNzhmY2E4MDE5YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5MDUsMTIgKzE5MDUsMjAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKworICAgICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5z
dGFuY2U6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgICAgICBjYXNlIENyZWF0ZUdl
bmVyYXRvcjoKICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgY2Fz
ZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAg
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBhNWNkZjFhYTZmM2QyZDli
MWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4wNGUwMjVhYjJmMTFiZTI4NjU2YTU5YjU3MTI2NTBj
ZjU4N2QzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIsNiArNTIs
NyBAQAogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUu
aCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKQEAgLTYxNSw3ICs2MTYsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QdXRCeU9mZnNldChTdG9yYWdlQWNjZXNzRGF0YSYg
ZGF0YSwgRWRnZSBzdG9yYWdlLCBFZGdlIGJhc2UpCiAgICAgewotICAgICAgICBBU1NFUlQobV9v
cCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRG
bHVzaCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQpOworICAgICAgICBBU1NFUlQobV9vcCA9
PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVz
aCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQgfHwgbV9vcCA9PSBQdXRQcml2YXRlTmFtZUJ5
SWQpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGls
ZDMoY2hpbGRyZW4uY2hpbGQyKCkpOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDIoYmFzZSk7
CkBAIC02MjUsNyArNjI2LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRvTXVs
dGlQdXRCeU9mZnNldChNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3Ag
PT0gUHV0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29w
ID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBQdXRQ
cml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9IGRhdGE7CiAgICAgICAgIG1fb3Ag
PSBNdWx0aVB1dEJ5T2Zmc2V0OwogICAgIH0KQEAgLTEwODcsNiArMTA4OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoK
ICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWVCeUlkOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgzLDYgKzIyODUsMTkgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisg
ICAgeworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFBy
aXZhdGVOYW1lQnlJZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRL
aW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOwor
ICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUobV9vcEluZm8yLmFz
PHVpbnQ4X3Q+KCkpOworICAgIH0KKwogICAgIGJvb2wgaGFzQXJpdGhNb2RlKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCmluZGV4IDY5NjIxOWM4ZGYxMWQzMzZkYzcwZjlhNGZhODBkOGI4NTM0MjhiMGEuLmRhODdk
M2YxYzJmYWI2MGRjYTJmMWViYThlNjhjY2RkZTA2Mzc1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxEaXJlY3QsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhQdXRQcml2YXRlTmFtZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lQnlJZCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDBlNGMzMWJmMGQ3ZTU4NThiYmRi
NzQ0MjMwYTYzNjdjNGZhMGI2MzkuLjQzMzUyNjU5YjJhZTBhYzM1OTdkOWQ1ZGE4ODkwZWU5OGE4
NDQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJERkdSZWdp
c3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiSGVhcENlbGwuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYg
RU5BQkxFKERGR19KSVQpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBPcEluZm8gewogICAgIGV4
cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3AuYXNCaXRzKCkpIHsgfQogICAg
IGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRzKCkpKSB7IH0KICAgICBl
eHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1
ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5k
KSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1NDNjNzdjNTdmNTkwZDk3ODc0NzguLmZmMzYyODQwMjE5
YWI0MmNhNzA3NTdjZDllNWRjYWQ5ZDZlMmRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC0xMzc4LDYgKzEzNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVO
YW1lQnlJZDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dElu
dGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGIwN2NiYTcwZmUxOWM0MTBm
MmVkNWE0MDc2ZDg0NmEyN2QxZjFjZjUuLjkxN2RlMDJmZTZiZTI4YmMzYzg3NjkyZGIwYTU3ZmM5
ZTg0Mjc0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC01MjYsNiArNTI2LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNl
IFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGUzMGQ2NmUwODE5
ZmMxNDEzZTZmY2Q0YTYyYmMxZGU1ZWQxNTVhYzAuLjQyMGVhOTQ2ZmMzNTIwMzNhOTM3ZDJmZWU5
ZTM0OGUzOGQyZjEwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0LDYgKzM1MjQsNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDMoKSk7CisKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5VmFsdWUuZ3ByKCk7CisKKyAgICBzcGVjdWxh
dGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5R1BSKTsKKworICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNE
ZWZpbmUoKSA/IG9wZXJhdGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNl
dFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0
eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbTMyKEVD
TUFNb2RlOjpzdHJpY3QoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVl
LmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOworCisgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdl
bmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAvLyB0byBjaGVjayBpdCBoZXJlLgorICAg
IGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8g
RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgIGNh
Y2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNj
cmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6
OnN0cmljdCgpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDM5Niw3ICsx
NDQzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBw
dXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQ
UiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggMWI2MzIxN2UzNmM3MWViMWVmMGEzNmQ4OTJjMGU2MWQyMGZlM2U1Mi4uZjA4ZGZlNzYyNzJh
YjQ0ODUyYmU0MGQxZmRjY2VkNzJkMzg4MjBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM2MCw2ICsxMzYwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSosIEVkZ2UmIGNo
aWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5
VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBF
ZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5T2Zmc2V0KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlTWF0Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOTc0ZTdhOTZhOGFhMmVkMjcw
ODEyNWFmNGUwYTFjMzY4ZjhmNGQ1YS4uNjA5NTMxYjhmNTY0YjlkOWFjODZmYThmYWU4ZTMzMGZk
ZDAwMmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTkwLDYgKzI1OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6
IHsKKyAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMDM5MzA3ZjEyZDlmNTUwMWNmYjYz
YTNjM2QyM2YxMTJjNjM1ZDk1My4uYzMyMzkzODYwMjI1MTdiZTllNGIzNTBlZTdmYjNhZTliYmYz
MGU2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCkBAIC0yOTQ4LDYgKzI5NDgsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAg
ICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNh
c2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCAwNzE1M2I4ZTQ3
MTJmNjgyOWI2ZWJjNjMyMTc0NjZmODNkNDZjMWM0Li43MGU3ODM5OGMzNmEyODY4ZmFmNzI3YzQ4
ZWYxMzkxMmQ4ZDM5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjY2LDYgKzI2Niwx
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBlbWl0IElDIGNvZGUgd2hlbiB3ZSBoYXZlIGEgbm9uLW51bGwg
Y2FjaGVhYmxlSWRlbnRpZmllciBhbmQgd2UgbmVlZCB0byBpbnRyb2R1Y2UgYQorICAgICAgICAg
ICAgICAgIC8vIGJhcnJpZXIgZm9yIGl0LiBPbiBQdXRQcml2YXRlTmFtZSwgd2UgcGVyZm9ybSBz
dG9yZSBiYXJyaWVyIGR1cmluZyBzbG93IHBhdGggZXhlY3V0aW9uLgorICAgICAgICAgICAgICAg
IGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYzgw
YjE2ODQ0YWFiYWNkODU2Njk2ZDg0NWY4MWMzYzZmOTc3Mzk3YS4uYjZhODJjNzFkNDRlOTQ3Y2Uy
OWQyZTI3OWIwYzAzNjhmZGZhYzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzk0LDYgKzM5NCw4IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICBj
YXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBj
YXNlIEZpbHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IGFjYTllNDRiZGFhODQ0OTg4NDQxYTlkNzk3YTFkYzY5OGVl
ZDc5MGIuLjYzZTgxOTFhZjcwNWU4NmQ0YTUyZGJhMzFmYThmODg3YjFiYTA3YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMTcsNiAr
MTAxNywxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlUHV0UHJpdmF0
ZU5hbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1l
QnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAgICAgIGNhc2UgQXRvbWlj
c0FuZDoKICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hhbmdlOgpAQCAtMzk0NSw2ICsz
OTUxLDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCgpCisgICAgeworICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwg
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNr
IGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAvLyB0byBj
aGVjayBpdCBoZXJlLgorICAgICAgICBhdXRvIHB1dEtpbmQgPSBtX25vZGUtPnByaXZhdGVGaWVs
ZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogRGlyZWN0
UHJpdmF0ZUZpZWxkU2V0OworICAgICAgICBjYWNoZWRQdXRCeUlkKG1fbm9kZSwgYmFzZSwgdmFs
dWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHV0S2luZCk7CisgICAgfQorCisgICAgdm9pZCBjb21w
aWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICB2bUNh
bGwoVm9pZCwgbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJh
dGlvbkRlZmluZVByaXZhdGVOYW1lR2VuZXJpYyA6IG9wZXJhdGlvblNldFByaXZhdGVOYW1lR2Vu
ZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIoRUNNQU1v
ZGU6OnN0cmljdCgpLnZhbHVlKCkpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVBdG9taWNz
UmVhZE1vZGlmeVdyaXRlKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC00
MTkxLDE0ICs0MjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
dm9pZCBjb21waWxlUHV0QnlJZCgpCisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKE5vZGUqIG5vZGUs
IExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1
dEtpbmQpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpOwotCi0gICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIExWYWx1ZSBiYXNl
ID0gbG93Q2VsbChub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCk7CisgICAgICAgIEFTU0VSVChpZGVu
dGlmaWVyKTsKIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5w
YXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
YmFzZSk7CkBAIC00MjE0LDcgKzQyNDIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFy
ZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBz
dGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVj
bWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAg
ICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDIzMyw3ICs0MjYwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRj
aHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTQyNjEs
NiArNDI4OCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHsKKyAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKworICAgICAgICBOb2Rl
KiBub2RlID0gbV9ub2RlOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0OworICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIGJhc2UsIHZh
bHVlLCBub2RlLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21waWxlR2V0QnV0dGVyZmx5KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCmluZGV4IGQ5NjU4NWIxMDU3NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUuLjcz
MTcxMDA5NmNmM2UyNDk4YWU0NWRkYTI2YWE4MmU3OWNkNDZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xMzksOSArMTM5LDkgQEAgbW9kdWxlIERTTAogI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNp
bmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDc2MjUyMDE5Nzhh
MmU2YTg5YTNlYTQxMjhmNjQwNzYzNzk1NmU4MjIuLjlhZDJmM2JkZTJhZWRiOTY0MDFiZWYwZWIy
ZDJjNjIzZmRmZDdmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQyNiw2ICs0
MjYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX2RpcmVj
dCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChv
cF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV9p
ZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKQEAgLTU4Nyw2ICs1ODgsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9kZWxfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lk
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQpAQCAtOTAyLDcgKzkwNCwxMiBA
QCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgICAgICAgICAgYXV0byBub3RJbmRl
eEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CiAgICAgICAgICAg
ICBpZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAg
ICAgbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdEluZGV4SnVt
cCkpOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihi
eVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCisgICAgICAgICAgICBQYXRjaGFi
bGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlw
ZUp1bXA7CisgICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxK
U0ludGVybmFsUHRyVGFnPigpOworICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlQmFkVHlw
ZUp1bXApLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRp
b25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5h
bFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKwogICAgICAgICAg
ICAgYXV0byBkb25lVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4o
cGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9u
SW5mby5kb25lVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRvIG5leHRIb3RQYXRoVGFyZ2V0ID0g
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25P
ZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5uZXh0SG90UGF0aFRhcmdl
dCkpOwogICAgICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4oYnlWYWxDb21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IDUwOGFmNTBmNjFlYjMxNmZlMzMzOWE5N2Q1MGVjNTRiMTk1NmM3OTcuLmI0
NWJlM2FkNTAyNzkxNTBiNzkyNDNhMDRmZmJlYzExZjkzMWY5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBP
cFB1dEJ5VmFsOwogICAgIHN0cnVjdCBPcFB1dEJ5VmFsRGlyZWN0OworICAgIHN0cnVjdCBPcFB1
dFByaXZhdGVOYW1lOwogICAgIHN0cnVjdCBPcFB1dFRvU2NvcGU7CiAKICAgICBzdHJ1Y3QgQ2Fs
bFJlY29yZCB7CkBAIC0xNjEsNiArMTYyLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgIH0KIAorICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5
VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgICAgICA6
IGJ5VmFsSW5mbyhieVZhbEluZm8pCisgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCkKKyAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKKyAgICAg
ICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQorICAgICAgICAgICAgLCBuZXh0SG90UGF0
aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAg
ICAgQnlWYWxJbmZvKiBieVZhbEluZm87CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1w
OwpAQCAtMjM0LDYgKzI0NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGppdC5w
cml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wPihieVZhbEluZm8sIHJldHVybkFk
ZHJlc3MsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CisgICAgICAgICAgICBqaXQubV9i
eXRlY29kZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgaml0
LnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCByZXR1
cm5BZGRyZXNzLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB9CisKICAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KHZt
LCBjb2RlQmxvY2spOwpAQCAtMjU5LDYgKzI3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5
VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIpOwogCisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRQcml2
YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBDYWNoZWFi
bGVJZGVudGlmaWVyKTsKKwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlSGFzSW5kZXhlZFBy
b3BlcnR5KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKICAg
ICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKTsKQEAgLTQwNiwxMSArNDI1LDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nl
c3MgZm9yIGEgYnl0ZWNvZGUuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAg
ICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworICAg
ICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwogCiAgICAg
ICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwu
CiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwg
UmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nh
c2VzKTsKIAorICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVtaXRQdXRQcml2YXRlTmFtZVdp
dGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlz
dCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKKwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25l
Q2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCkBAIC02MDUsNiArNjI2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wID0gT3BQdXRCeVZhbD4KICAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiopOwpAQCAtNjg2LDYgKzcwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
cHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5k
ZXggYWU2MWQ5MTg1ZmVjNzViZWVlZWExZGM0M2JiNmE0NzFmMmJkN2NlNy4uOGJmYWI4MTVlYTE1
YjM1OWFkMzQzOWZmMjI0NWZlNmQ3YTlhZDRkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNSwxMSArMTM1
LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2Vu
ZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQg
cHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQor
ICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCiAgICAgICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQ
dXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCi0gICAgICAgICwgbV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCiB7CiAgICAgbV9zdHViSW5m
by0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKIH0KQEAgLTE1MSwyMiArMTUwLDI1IEBA
IHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24oKQogewotICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0g
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgewotICAgICAgICBBU1NFUlQobV9wdXRLaW5k
ID09IERpcmVjdCk7Ci0gICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOwotICAg
ICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6OkNyZWF0ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgfQotCi0gICAgaWYgKG1fZWNtYU1v
ZGUuaXNTdHJpY3QoKSkgewotICAgICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkKKyAgICBz
d2l0Y2ggKG1fcHV0S2luZCkgeworICAgIGNhc2UgTm90RGlyZWN0OgorICAgICAgICBpZiAobV9l
Y21hTW9kZS5pc1N0cmljdCgpKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RP
cHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJp
Y3QoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemU7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7Ci0g
ICAgfQotICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJlY3RQcml2YXRlRmllbGREZWZp
bmU6CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAg
IGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQobV9lY21hTW9kZS5p
c1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIEpJVERl
bEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApp
bmRleCAyOWMyZDJlNmQzMjhkYTljYjM3NjExNWQ5OTJlYTJhMmM1MGM1OTk0Li44NTM4MzVhMzkz
NTg1MjkxMjdkZTJmMzk3YjQ5Nzk5ODI0ZTM2ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsMTIgKzEz
MCwxMSBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNt
YU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQogICAgIHsgfQogCiAgICAgSklUUHV0
QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcg
c2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0
ZUFjY2Vzcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNN
QU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDcgKzE0Myw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKLSAgICBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKIH07CiAKIGNsYXNz
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMmY3NmRiMDA2OTIxMThh
Zjg1MmU3MDYyOTUwMjc0Mjk5ODVhY2ZiMi4uZDhlNWRhMTJhMzBjYzYyOTlkMTBiMzExZjNlZGM4
MDVkNGZjNTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5
OSwyMSArNjk5LDkgQEAgQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0
QnlJZD4oT3BQdXRCeUlkIG9wKQogfQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFN
b2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkK
K0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPihP
cFB1dFByaXZhdGVOYW1lKQogewotICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApCi17Ci0gICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmU7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4o
T3BQdXRCeVZhbERpcmVjdCBvcCkKLXsKLSAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmll
bGRBY2Nlc3NLaW5kKCk7CisgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCA0ZjQ1MjRkYzcyYjRkOTFiNzI5ZWE5NWVjOGQyNjBlYzE4NTY0MmY0Li5iYzVh
YmQyMTYyYzEwMDQxZjc4ZWMwN2E0YjgwZmI2MWIzYWZmNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYQogfSAvLyBleHRlcm4gIkMiCiAKIHVzaW5nIFB1dFByaXZhdGVGaWVs
ZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJl
KiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmllciYpPjsKLUFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFB1dFByaXZhdGVG
aWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrKCkpCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIHNldFByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBQ
dXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxsYmFj
aygpKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAt
NzEyLDcgKzcxMiw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxk
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAKICAgICBQdXRQcm9wZXJ0
eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0
KCkpOwotICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGlkZW50
LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogCiAgICAgaWYgKGNhbGxiYWNrKQpAQCAtNzcwLDExICs3NzAsMTEg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRT
dHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NU
eXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwg
Y29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVy
ZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRDcmVh
dGUpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZv
LCBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpOwogICAgIH0pOwogfQogCi12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFi
bGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2
YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtNzgzLDEwICs3ODMsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwog
Ci0gICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZh
bHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7CisgICAgc2V0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7CiB9CiAKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50
cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpAQCAtNzk4LDEzICs3OTgsMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKIAot
ICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmpl
Y3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbJl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICBzZXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWyZdKFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0
eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CiAgICAgICAgIExPR19J
QygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0
aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9
PSBiYXNlT2JqZWN0KSk7CiAKICAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nl
c3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7
CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2Nr
LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQo
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRp
ZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRQdXQpOworICAgICAg
ICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3Qs
IG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2
YXRlRmllbGRTZXQpOwogICAgIH0pOwogfQogCkBAIC0xMTE5LDYgKzExMTksMTMzIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2Jq
ZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwog
fQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtp
bmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKworICAgIGlm
IChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJs
ZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgQVNTRVJUKHN1YnNjcmlwdC5p
c1N5bWJvbCgpKTsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Ynl0ZWNvZGVJbmRleCgpICE9
IEJ5dGVjb2RlSW5kZXgoMCkpOworICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUpOworICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CisgICAgICAgICAgICBpZiAoYnlW
YWxJbmZvLT5jYWNoZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAg
ICBKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCh2bSwgY29kZUJsb2NrLCBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYnlWYWxJbmZv
LT5jYWNoZWRJZCk7CisgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1p
emF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIC8vIFNlZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCisgICAg
ICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZl
VXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
CisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBieVZhbEluZm8tPmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNl
bGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1
bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkp
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRp
bWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1p
emF0aW9uUmVzdWx0OjpTZWVuT25jZSkgeworICAgICAgICAvLyBJZiB3ZSB0YWtlIHNsb3cgcGF0
aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3VyZSB3ZQor
ICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZlcyAxMCBp
dGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5CisgICAgICAgIC8vIGZvciB1cyB0byBvYnNl
cnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgorICAgICAg
ICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBpcyBHaXZl
VXAuCisgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkKKyAgICAg
ICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwor
ICAgIH0KKworICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0
OjpHaXZlVXApIHsKKyAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCisgICAg
ICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgY3RpUGF0Y2hDYWxs
QnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNl
KCk7CisgICAgCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0
aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3
YXlzIGluIHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOwor
ICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHV0S2luZC5p
c0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJh
c2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworfQorCitzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKK3sKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgp
OworCisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNs
YXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGlu
IHN0cmljdCBtb2RlCisgICAgY29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGF1
dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHJpdmF0ZUZpZWxkUHV0
S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisgICAg
ICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOworfQorCisvLyBXZSBuZWVkIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUg
b2Ygb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZQordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZh
dGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKworICAgIHB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkQmFzZVZhbHVlLCBlbmNvZGVkU3Vic2NyaXB0LCBlbmNvZGVkVmFsdWUsIHByaXZh
dGVGaWVsZFB1dEtpbmQpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0UHJp
dmF0ZU5hbWVHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2Rl
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcHV0UHJpdmF0
ZUZpZWxkKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRCYXNlVmFsdWUsIGVuY29kZWRTdWJzY3Jp
cHQsIGVuY29kZWRWYWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOworCisgICAgaWYg
KGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQor
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lUHJpdmF0ZU5hbWVHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgdm0sIGVuY29kZWRCYXNlVmFsdWUsIGVuY29kZWRTdWJzY3JpcHQsIGVuY29kZWRWYWx1ZSwg
UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZGVmaW5lKCkpOworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAg
ICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggNjVlNzEyNTk1NjgzMGE4ODNlODMzMzA3OTUzOWUyMDQ0MmMw
NWQ5NC4uYzI0MGE1NmJjYjM5ODI5NzI4ZjliMmY4ZDkyOWJiNDNkMmQyZjQyNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiSklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRl
ICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgi
CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaD4KQEAgLTE5MSwxMyArMTkyLDE3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0
ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVm
aW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QpIFdURl9JTlRFUk5BTDsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBX
VEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldFByaXZhdGVO
YW1lR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiAK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVkMTcxOWE0
NzM4OTI4YTBmMmM2MWJlM2UyZGRkNDc0M2EuLmIxYWJmMjc3MTAyZDQ2MmU1YzU4YjFhNTI3MWE2
ZGZmNmU0OTQzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93UGF0aENh
bGwuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9TY29w
ZWRMYW1iZGEuaD4KQEAgLTMxNiw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6
ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21h
TW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUp
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRl
LWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNp
emUuCkBAIC0zNDYsNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFN
b2RlID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNv
ZGUubV9lY21hTW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5LDYgKzM3
MCw0NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2Nv
ZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hh
YmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAgICBMYWJl
bCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVu
ZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBh
dGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2Rl
Lm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFiZWwgc2xv
d1BhdGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BS
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BS
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRL
aW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVy
QnlJZD4oKTsKQEAgLTcwMCw3ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAgIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwpAQCAtMTM1OCw3ICsxNDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQ
dXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwg
cHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNl
cy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQg
cHV0S2luZCwKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRHZW5lcmF0
b3IgSklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSBi
eXRlY29kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25l
Q2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0gYnl0ZWNv
ZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBEaXJl
Y3RQcml2YXRlRmllbGRTZXQ7CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChi
eXRlY29kZSwgcHV0S2luZCwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Cit9
CisKIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgV3Jp
dGVCYXJyaWVyTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0aW9uYWxX
cml0ZUJhcnJpZXIgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYsNiArMTUx
NCw0MCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
QnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5
TW9kZSk7CiAKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hl
ZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQo
YnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3Qg
ZG9uZUNhc2VzOworICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgZ2VuID0gZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9w
ZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqdGhpcywgbV9jb2RlQmxvY2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBi
eVZhbEluZm8tPnNsb3dQYXRoVGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNl
cywgYnlWYWxJbmZvLT5kb25lVGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVt
cHR5KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFs
SW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRl
IDogbV9jYWxscykgeworICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0K
KyAgICBnZW4uZmluYWxpemUocGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2Nv
ZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFz
ZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1
YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRh
dGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVl
KCkpOworICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIGF1
dG8gZ2VuZXJpY0Z1bmN0aW9uID0gYnl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVy
YXRpb25EZWZpbmVQcml2YXRlTmFtZUdlbmVyaWMgOiBvcGVyYXRpb25TZXRQcml2YXRlTmFtZUdl
bmVyaWM7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KGdlbmVyaWNGdW5jdGlvbikpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVh
YmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUz
MTNiMmFmMzA4MWViMGY1YzFlYTRjMzA1NzQ4Li5mMTVjMGQwMTYwMzBkZjU0ZjNjNWRiYjQ4ZTQw
MDc5OWJjOWI5NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmUKIH0KIAogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZv
ID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1p
dExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAg
ICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNs
b3dDYXNlKGZhc3RQYXRoSm1wKTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5
VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlW
YWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0g
Ynl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBM
YWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdU
MSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOwor
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxv
YWRHUFIoKSk7CisgICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZv
LCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRp
b25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRo
OworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJl
dHVybkFkZHJlc3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisK
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxE
aXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0g
ICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJl
Z1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAppbmRleCAyZWJiMTNhZmRhNDBlMTY0MGMzYmQ5MzE4MmFmMmM1NWNhZDU4ZjFhLi5lMGI5
MDE4YWZhZGMzMDdiMWM2MTVkOTJmNmMzNmEyNWU0YTBmOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUzNSwzNCArNTM1LDQ4IEBAIHZvaWQgcmVwYXRjaEFycmF5
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTCiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihj
b25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUo
Jm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCiB7Ci0gICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpIHsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAocHV0
S2luZCkgeworICAgIGNhc2UgTm90RGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OworICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIERpcmVjdDoKKyAg
ICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkQ3JlYXRlKQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZp
bmVQcml2YXRlRmllbGRTdHJpY3Q7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZh
dGVGaWVsZFB1dCkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0OwotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAg
ICB9Ci0gICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJU
KHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERl
ZmluZVByaXZhdGVGaWVsZFN0cmljdDsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZFNldDoK
KyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdDsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5j
dGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVj
bHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKIHsKLSAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisg
ICAgc3dpdGNoIChwdXRLaW5kKSB7CisgICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChz
bG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RP
cHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGlt
aXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0g
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQp
Ci0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplOwotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
OwotICAgIH0KLSAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERl
ZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAg
IGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmlj
dE1vZGUoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtp
bmQgcHV0S2luZCkKQEAgLTYwOSw2ICs2MjMsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9CiAKKyAgICAg
ICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1
dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSkKKyAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOworCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlOwogCiAgICAgICAgIGlmIChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0Nh
Y2hlYWJsZVB1dCgpKSB7CkBAIC02NzAsNyArNjg3LDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBO
b3REaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0
UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsK
ICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNh
Y2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKQEAgLTY4OCw3ICs3MDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOwogICAgICAgICAgICAg
ICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Mo
dm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKQEAgLTE1
MjEsOCArMTUzNyw4IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCB8fCB1bm9wdGltaXpl
ZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkKICAgICAg
ICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emU7Ci0gICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9u
UHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQotICAgICAgICBvcHRpbWl6ZWRG
dW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsK
KyAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQ
cml2YXRlRmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRC
eUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCisgICAgICAgIG9wdGltaXplZEZ1bmN0
aW9uID0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAg
IGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5
SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVu
Y3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7
CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGY2MTBjMTk3NzQ2OWRjZDhjOGUzMDQ2MzFjYWM3
NDZiZDQyODQxM2YuLmM4YzI2MTUyNDNhZDhjMGE2ZGVkZDBlMGVmMzU0NWE0Njc0ODcxMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCkBAIC01OSw5ICs1OSw5IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNp
bmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk5hdGl2
ZUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRl
ICJQdXRCeVZhbEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCBkNGQwOTE2ZmYyZDc2MTQ0MDQzYTM5NWQzZThhODE4MzA3MjAxNDZhLi4z
NmZhZjUzN2RmZjQ1MjlhNWJjZmZkMzA5NmViOWExODUwZGYzYTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExNzcsMTYgKzExNzcs
MTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQog
ICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1
ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0
TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgIGJvb2wg
aXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNj
ZXNzKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3Ry
aWN0KCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlH
ZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vz
cyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgKmlu
ZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6
IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAg
ICB9CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKLSAgICAgICAgQVNTRVJUKCFp
c1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9
IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwogICAgICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQz
MiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJsZSk7CiAgICAgICAgIGlm
IChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNj
cmlwdEFzVUludDMyKSkgewpAQCAtMTIwMCwyNSArMTE5NywxMTYgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlz
UHJpdmF0ZUZpZWxkQWNjZXNzKSB7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICBMTElO
VF9FTkQoKTsgICAgCi0gICAgICAgIH0KLQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fdmFsdWUpOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgQVNT
RVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKSA6IG51bGxwdHI7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nl
c3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2Rz
IGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9
IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChi
eXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5l
UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBl
bHNlIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVjb2RlLm1fcHV0S2luZC5pc1NldCgpKTsKKyAgICAg
ICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZh
bHVlLCBzbG90KTsKKyAgICB9CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBp
ZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVworICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxs
KCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICYmIHN1YnNjcmlw
dC5pc0NlbGwoKQorICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVD
YWNoZWFibGUoKSkgeworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAob2xk
U3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkK
KyAgICAgICAgICAgICAgICAgICAgYiA9IGItPnByZXZpb3VzSUQoKTsKKworICAgICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkgeworICAg
ICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50
KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8g
b3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgICAgICBiLT5yYXJlRGF0YSgpLT5zaGFy
ZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwo
IkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVh
cmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKyAgICAgICAgbWV0YWRhdGEu
bV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIo
KTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgIAorICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Cisg
ICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpICYmIG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0
cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F3UG9seVByb3RvID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWlu
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNhd1BvbHlQcm90byk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAmJiAhc2F3UG9seVBy
b3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRT
dHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVy
ZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5
LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNzZXJ0IGhl
bHBzIGNhdGNoIGJ1Z3MgaWYgd2UgYWNjaWRlbnRhbGx5IGZvcmdldCB0byBkaXNhYmxlIGNhY2hp
bmcKKyAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHRyYW5zaXRpb24gdGhlbiBzdG9yZSB0byBh
biBleGlzdGluZyBwcm9wZXJ0eS4gVGhpcyBpcyBjb21tb24gYW1vbmcKKyAgICAgICAgICAgICAg
ICAvLyBwYXRocyB0aGF0IHJlaWZ5IGxhenkgcHJvcGVydGllcy4gSWYgd2UgcmVpZnkgYSBsYXp5
IHByb3BlcnR5IGFuZCBmb3JnZXQKKyAgICAgICAgICAgICAgICAvLyB0byBkaXNhYmxlIGNhY2hp
bmcsIHdlIG1heSBjb21lIGRvd24gdGhpcyBwYXRoLiBUaGUgUmVwbGFjZSBJQyBkb2VzIG5vdAor
ICAgICAgICAgICAgICAgIC8vIGtub3cgaG93IHRvIG1vZGVsIHRoZXNlIHR5cGVzIG9mIHN0cnVj
dHVyZSB0cmFuc2l0aW9ucyAob3IgYW55IHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIHRy
YW5zaXRpb24gZm9yIHRoYXQgbWF0dGVyKS4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChuZXdTdHJ1Y3R1cmUgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBuZXdTdHJ1
Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJz
Y3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA2YzMwOGQ5ZjNkZGUyNWI5
ZmUxYjY4ZDc3NjBkNGVlZTExYjFhYTg5Li5hNjM1NGZmOWQ4YTc4NzgxZTE4Y2JmZTgzM2YzYTlj
MWNjYjhjZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaApAQCAtNzYsNiArNzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfZ2V0dGVyX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X3NldHRlcl9ieV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGViZDM2YmFjZWRkNGUw
MzgxNDAxNjI5Zjk2YTExNjVhMWU3ZTkzNjYuLmE2MDJhYmYwMzI4MmIxMjBkM2M2MWNlZjc5OTYx
YTJhMDkwMDFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02MTQsNiArNjE0LDEzIEBAIG1hY3Jv
IHdyaXRlQmFycmllck9uQ2VsbFdpdGhSZWxvYWQoY2VsbCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkK
ICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxv
YWQoc2l6ZSwgZ2V0LCBjZWxsRmllbGROYW1lLCByZWxvYWRBZnRlclNsb3dQYXRoKQorICAgIGdl
dChjZWxsRmllbGROYW1lLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChz
aXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25lKQorICAgIHdyaXRlQmFycmll
ck9uQ2VsbFdpdGhSZWxvYWQodDIsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisud3JpdGVCYXJyaWVy
RG9uZToKK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0LCBjZWxs
RmllbGROYW1lKQogICAgIGdldChjZWxsRmllbGROYW1lLCB0MSkKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJEb25l
KQpAQCAtMTY5Myw2ICsxNzAwLDQ4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZh
dGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlz
cGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUs
IE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1f
dmFsdWUpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAg
Z2V0KG1fcHJvcGVydHksIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIG1ldGFkYXRh
KHQ1LCB0MikKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vbGRTdHJ1
Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgLm9wUHV0UHJpdmF0
ZU5hbWVTbG93CisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CisgICAgIyB0MCAtPiBv
YmplY3QgYmFzZQorICAgICMgdDIgLT4gY3VycmVudCBzdHJ1Y3R1cmUgSUQKKyAgICAjIHQ1IC0+
IG1ldGFkYXRhCisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9uZXdT
dHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgYnRpeiB0MSwgLm9wUHV0Tm90VHJhbnNpdGlvbgorCisg
ICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVy
T25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIG1fYmFzZSwgbWFjcm8gKCkKKyAgICAgICAg
IyBSZWxvYWQgbWV0YWRhdGEgaW50byB0NQorICAgICAgICBtZXRhZGF0YSh0NSwgdDEpCisgICAg
ICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgICAgICBnZXQobV9iYXNlLCB0MSkKKyAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIENlbGxUYWcsIHQwLCAu
b3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgZW5kKQorCisub3BQdXROb3RUcmFuc2l0aW9uOgor
ICAgICMgVGhlIG9ubHkgdGhpbmcgbGl2ZSByaWdodCBub3cgaXMgdDAsIHdoaWNoIGhvbGRzIHRo
ZSBiYXNlLgorICAgIGdldChtX3ZhbHVlLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDAsIHQyLCB0MykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFB1dFByaXZhdGVOYW1lU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQorICAgIGRp
c3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggZTI3NjA5MjhhMGZjOTQxMzk4MDlmZDNlOGNjOGZlMjFiYTk3
OTc5YS4uMGEzNTlkZWUzMmRjMDM2MDNkNmNkOTQ2ZGIxMTU4MGQ0MmYyOTkwNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTE3MzQsNiArMTczNCw0OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2
YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRp
c3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1l
LCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbChzaXplLCB0MywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBnZXQobV9wcm9w
ZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAu
b3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9w
UHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBi
aW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93
CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0s
IHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQg
dGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAt
PiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRp
IE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAg
ICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNp
emUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRv
IHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRv
IHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQxLCB0MCkKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246CisgICAg
IyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJh
c2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDEsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNl
dFt0NV0sIHQxCisgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikK
KyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQor
ICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5k
KQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBv
aW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAg
ICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGFlMzNmZmY0MDM0OTQ2YzY3M2U4ZjliNWQ5
OGYzN2E2YTQxY2FjY2IuLjU5OTdjMDc2YzcwMWY3YjZhYjZlMjY1ZmE1ODZiMDg3NjMzNmEwYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGdldFByaXZhdGVGaWVsZFNsb3QoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgaW5saW5lIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBpbmxpbmUgdm9pZCBwdXRQcml2YXRlRmllbGQoSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgaW5saW5lIHZvaWQgZGVmaW5l
UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKIAogICAgIHVuc2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXgg
OTU0NWMxZTE5NTFhOGNlOGQ3M2FhMDAxMTliNWM4MjRmM2JkOGUxZi4uNmM1MzlmY2UzMzRkYzZh
NGViZGRjMjk4YzRiMGIxMGRmNTczMTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTYxNyw3ICs2MTcsNyBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ1ZSk7CiB9CiAK
LWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBwdXRTbG90KQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByaXZhdGVG
aWVsZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCiB7CiAgICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cml2YXRlRmllbGRQdXRLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
aXZhdGVGaWVsZFB1dEtpbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMTIzNzdhOWIxM2U5MWJmZjNjYTA3
MmQyZDM3OTA2ZjllNmNiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgorCisjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIFByaXZh
dGVGaWVsZFB1dEtpbmQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAo
aXNTZXQoKSkKKyAgICAgICAgb3V0LnByaW50KCJTZXQiKTsKKyAgICBlbHNlCisgICAgICAgIG91
dC5wcmludCgiRGVmaW5lIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZiY2RjNGNhMzA0OGVjN2RhMDFkYmEwZDBhYWZjODRiYjU2NzUyZTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5k
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisq
CisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgUHJpbnRTdHJlYW07Cit9OworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFByaXZhdGVG
aWVsZFB1dEtpbmQgeworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBOb25lID0gMDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgU2V0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQ4X3QgRGVmaW5lID0gMjsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJp
dmF0ZUZpZWxkUHV0S2luZCBmcm9tQnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJuIFByaXZhdGVG
aWVsZFB1dEtpbmQoYnl0ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1
dEtpbmQgbm9uZSgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoTm9uZSk7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgc2V0KCkgeyByZXR1cm4gUHJpdmF0
ZUZpZWxkUHV0S2luZChTZXQpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQ
dXRLaW5kIGRlZmluZSgpIHsgcmV0dXJuIFByaXZhdGVGaWVsZFB1dEtpbmQoRGVmaW5lKTsgfQor
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUg
PT0gTm9uZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgPT0gU2V0OyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVmaW5lKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBEZWZpbmU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4
X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIGR1bXAoV1RG
OjpQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0ZXhwciBQcml2YXRl
RmllbGRQdXRLaW5kKHVpbnQ4X3QgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09IE5vbmUgfHwgbV92YWx1ZSA9PSBTZXQgfHwg
bV92YWx1ZSA9PSBEZWZpbmUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzZDA3NmYyY2M2MWEwZjhjYTY2NDg2MDM3ZWE2
NTAyZmUzZWI1ODNiLi5mMDkxNTFkMWJkZGMyNTM3YzNkNzRmOTIwN2E2ZWU2ZjQ2NTVkNzE1IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDIwLTA5LTIxICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KKworICAgICAgICBbSlNDXVtFU05leHRdIENyZWF0ZSBhIG5ldyBvcGNvZGUgdG8gaGFuZGxl
IHByaXZhdGUgZmllbGRzIHN0b3JlL2RlZmluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0aW5nIHRlc3RzIHRoYXQgZW1pdCBgZ2V0X3ByaXZh
dGVfbmFtZWAgdG8gYXZvaWQgZXhlY3V0aW9uIGluCisgICAgICAgIEZUTC9ERkcuCisKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0
LXByaXZhdGUtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qczogQWRkZWQuCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanM6IEFkZGVkLgor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRp
b24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGZn
LXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5v
dC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJlLW1pc3MuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnkt
b2Zmc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25z
dGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQt
c3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5
bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanM6
IEFkZGVkLgorCiAyMDIwLTA5LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgVGVzdDI2MiB1cGRhdGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxk
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9seW1v
cnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM2YzhjNDliZGVkMmUyYmNi
Mzc2NzdmNDY1NDE1NTFiODZkNTU2MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZp
ZWxkLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworY2xh
c3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhp
cy4jZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworCitsZXQgYzIgPSBuZXcgQygp
OworYzIuYmFyID0gMDsKKworbGV0IGMzID0gbmV3IEMoKTsKK2MzLmJheiA9IDA7CisKK2xldCBh
cnIgPSBbYzEsIGMyLCBjM107CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7
CisgICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUt
ZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9w
dXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjYyOGQzODhiYjA1MGI2MmU2NTk4YmY3
YzgzYWZhNDg4NjA4NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwx
NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwg
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQ7
CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVlOwor
ICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMgPSBuZXcg
QygpOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBjLnNldEZpZWxk
KGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhp
Yy1wdXQtcHVibGljLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBo
aWMtcHV0LXB1YmxpYy1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTMyZmNmYzU1NGU0OGVmNDc1Mzc3
MWMzOTVmYjJlZThlYTY1ZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qcwpAQCAtMCwwICsxLDI0IEBACitj
bGFzcyBDIHsKKyAgICBmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRo
aXMuZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworCitsZXQgYzIgPSBuZXcgQygp
OworYzIuYmFyID0gMDsKKworbGV0IGMzID0gbmV3IEMoKTsKK2MzLmJheiA9IDA7CisKK2xldCBh
cnIgPSBbYzEsIGMyLCBjM107CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7
CisgICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXB1YmxpYy1maWVsZC5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZmY2NlMmVmNjQx
NjQ4M2U2MjI3M2M4ZjUwNDVlYjQ0MTY4NWU3NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanMKQEAgLTAsMCArMSwxMyBAQAorY2xh
c3MgQyB7CisgICAgZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlz
LmZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQp
OworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykg
eworICAgIGMuc2V0RmllbGQoaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZmct
cHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFmNWU2MzA1NTc4ZGVmNjhiNGUyNmZmZjhlNzFjZjllMGI5NDhmY2IKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJy
aWVyLWluc2VydGlvbi5qcwpAQCAtMCwwICsxLDY5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIsICItLW1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uKGEsIGUpIHsKKyAgICAgICAgaWYgKGEg
IT09IGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24s
IGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAj
ZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGxldCBhcnIgPSBb
InAxIiwgInAyIiwgInAzIl07CisKKyAgICAgICAgbGV0IGtleSA9IGFycltpICUgM107CisgICAg
ICAgIHRoaXNba2V5XSA9IGk7CisgICAgICAgIGlmIChrZXkgPT09ICJwMiIpCisgICAgICAgICAg
ICB0aGlzWyJwMSJdID0gaTsKKworICAgICAgICBpZiAoa2V5ID09PSAicDMiKSB7CisgICAgICAg
ICAgICB0aGlzWyJwMSJdID0gaTsKKyAgICAgICAgICAgIHRoaXNbInAyIl0gPSBpOworICAgICAg
ICB9CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7
CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBvbGRPYmplY3QgPSBuZXcgQzsKK2ZvciAoOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGlmIChpIDwgNTAwMCkgeworICAgICAgICBsZXQgYyA9IG5l
dyBDOworICAgICAgICBjLnNldEZpZWxkKGkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChp
ID09IDUwMDApCisgICAgICAgICAgICBnYygpOworICAgICAgICBvbGRPYmplY3Quc2V0RmllbGQo
e3Byb3A6IGl9KTsKKyAgICAgICAgZWRlbkdDKCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUo
b2xkT2JqZWN0LmdldEZpZWxkKCkucHJvcCwgaSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQt
ZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQt
YXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2VjOGFkYmM0ODE0YTM2MGNjODM1
ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZn
LXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LWJ5LWlkLWRpcmVjdC5qcwpAQCAtMCww
ICsxLDU0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2Vw
dGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93
OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0
IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisK
K2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAg
ICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0g
YXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0g
InAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09
ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1si
cDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAg
IHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEM7CisgICAg
aWYgKGkgPiA1MDAwKSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGMuc2V0RmllbGQuY2FsbCh7fSk7CisgICAgICAgIH0pOworICAg
IH0gZWxzZQorICAgICAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQt
YXMtcHV0LXByaXZhdGUtbmFtZS1ieS1pZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2VjOGFkYmM0ODE0YTM2
MGNjODM1ODA3ZDBkYTkxZTUyZDE3MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY29tcGlsZWQtYXMtcHV0LXByaXZhdGUtbmFtZS1ieS1p
ZC5qcwpAQCAtMCwwICsxLDU0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBv
cnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLW1heFBv
bHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZT0yIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhy
ZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0
YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBl
Lm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCits
ZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAg
aW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAgICAg
ICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAgICAg
aWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAgICAg
IGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAgICAg
ICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVsZCh2
KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9Cit9Citub0lubGluZShDLnByb3Rv
dHlwZS5zZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0g
bmV3IEM7CisgICAgaWYgKGkgPiA1MDAwKSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGMuc2V0RmllbGQuY2FsbCh7fSk7CisgICAg
ICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICBjLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLXNldC1kby1ub3QtYWRk
LXN0cnVjdHVyZS10cmFzaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLXNldC1kby1ub3QtYWRkLXN0cnVjdHVyZS10cmFzaXRpb24uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDhkNmU0NTM2NGIwMmI0MzU1NGVkMzYyZDRhYThkZTEwYmM0N2ZhOAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQt
c3RydWN0dXJlLXRyYXNpdGlvbi5qcwpAQCAtMCwwICsxLDUwIEBACisvL0ByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0
aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGlu
c3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiAr
IGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlv
bi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisK
K2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICByZXR1cm4ge307CisgIH0KK30K
KworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNmaWVsZCA9IDA7CisKKyAgICBnZXRGaWVs
ZChjaGFuZ2VSZWNpZXZlcikgeworICAgICAgICBsZXQgciA9IHRoaXM7CisgICAgICAgIGlmIChj
aGFuZ2VSZWNpZXZlcikgeworICAgICAgICAgICAgciA9IHt9OworICAgICAgICB9CisKKyAgICAg
ICAgci4jZmllbGQgPSAnYmFyJzsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRG
aWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeworICAgIGlmIChpIDwgOTAwMCkKKyAgICAgICAgQy5wcm90b3R5cGUuZ2V0RmllbGQuY2Fs
bChjLCBmYWxzZSk7CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMs
IHRydWUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJlLW1pc3MuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmExNjk1YTFhZGUzNzY5YzYxNGRkYzkzMDEzMmVhZjg4ZTIxZWMyZGEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLXN0cnVjdHVyZS1taXNz
LmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICAj
ZmllbGQgPSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChpID49IDUw
MDApCisgICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICAgICAgcmV0dXJuICd0ZXN0
JzsKKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsK
KyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwor
ICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcp
OworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0
LXB1dC1ieS1vZmZzZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAyZmFhODkxYWU0MTQwMWVlYWNmZGFlZDgz
NWY0ZTQyZGY0ZTVlNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanMKQEAgLTAs
MCArMSw1NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKwor
bGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDA7CitsZXQgdHJpZ2dlckNvbXBpbGF0aW9uID0gZmFsc2U7
CitsZXQgY29uc3RydWN0RGlmZmVyZW50ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQg
PSB0aGlzLmluaXQoKTsKKworICAgIGluaXQoKSB7CisgICAgICAgIGlmIChjb25zdHJ1Y3REaWZm
ZXJlbnQpCisgICAgICAgICAgICB0aGlzLmZvbyA9IDA7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIG1ldGhvZChqLCBvdGhlcikgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAg
IGxldCBvYmogPSB0aGlzOworICAgICAgICBmb3IgKGxldCBpID0gMDsgdHJpZ2dlckNvbXBpbGF0
aW9uICYmIGkgPCBpdGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICBjKys7CisgICAgICAgIGlm
IChqICUgMikgeworICAgICAgICAgICAgb3RoZXIuZm9vID0gajsKKyAgICAgICAgICAgIG9iaiA9
IG90aGVyOworICAgICAgICB9CisgICAgICAgIG9iai4jZmllbGQgPSBjOworICAgIH0KKworICAg
IGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9J
bmxpbmUoQy5wcm90b3R5cGUubWV0aG9kKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKKworbGV0IG90aGVyQyA9IG5ldyBDKCk7CisKK2NvbnN0cnVjdERpZmZlcmVudCA9IHRy
dWU7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBjLm1ldGhvZChpLCBvdGhlckMpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNvbXBpbGF0aW9uID0gdHJ1ZQorbGV0IGMgPSBuZXcg
QygpOworYy5tZXRob2QoMCwgb3RoZXJDKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgp
LCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NzIwZWM4MDRhOTRmNzFlMzU4ZWE3YWFlNmE2ZmU4ZGVlMjU4NTUyCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1m
b2xkaW5nLXRvLXB1dC1ieS1vZmZzZXQuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBl
KSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpdGVyYXRpb25zID0gMTAwMDA7CitsZXQgdHJpZ2dl
ckNvbXBpbGF0aW9uID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSAwOworCisgICAg
bWV0aG9kKCkgeworICAgICAgICBsZXQgYyA9IDA7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0
cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMr
KzsKKyAgICAgICAgdGhpcy4jZmllbGQgPSBjOworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgaSsrKSB7CisgICAgYy5tZXRob2QoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0
RmllbGQoKSwgMCk7Cit9CisKK3RyaWdnZXJDb21waWxhdGlvbiA9IHRydWUKK2MubWV0aG9kKCk7
Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgaXRlcmF0aW9ucyk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZjMjk5YzY2
MjcwYmFiY2EzZDAwN2I3YTc4MzA5NzcyNzk0ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30K
KworZnVuY3Rpb24gY2xhc3NEZWNsYXJhdGlvbihkeW5hbWljUHJvcGVydHkpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgCisgICAgICAgIGluaXQo
KSB7CisgICAgICAgICAgICB0aGlzW2R5bmFtaWNQcm9wZXJ0eV0gPSBkeW5hbWljUHJvcGVydHk7
CisgICAgICAgIH0KKworICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNm
aWVsZCA9IHY7CisgICAgICAgIH0KKworICAgICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorbm9JbmxpbmUoY2xhc3NEZWNsYXJhdGlv
bik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBDbGFzcyA9
IGNsYXNzRGVjbGFyYXRpb24oJ3Byb3BlcnR5JyArIGkpOworICAgIGxldCBjID0gbmV3IENsYXNz
KCk7CisgICAgYy5zZXRGaWVsZCgndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCAndGVzdCcpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1pbnZhbGlkLWRlZmluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTU5OGU3MDE5ZDM3NGQ2MGFhOWQ3
Y2RhOWNmNTQyYjcxNjdmM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1pbnZhbGlkLWRlZmluZS5qcwpAQCAtMCwwICsxLDY0IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNo
b3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRo
cmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAg
ICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5z
dGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsg
ZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9u
Lm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKwor
bGV0IHNob3VsZE92ZXJyaWRlUmV0dXJuID0gZmFsc2U7CitsZXQgb2JqOworCitjbGFzcyBCIHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKHNob3VsZE92ZXJyaWRlUmV0dXJuKQor
ICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQor
CitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICNmaWVsZCA9ICd0ZXN0JzsKKworICBnZXRGaWVsZCgp
IHsKKyAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1
Y3Rvcik7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlw
ZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBpZiAoaSA+IDEwMDApIHsKKyAgICAgIHNob3VsZE92
ZXJyaWRlUmV0dXJuID0gdHJ1ZTsKKyAgICAgIG9iaiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcg
QygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKG9i
aiksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgICAgbmV3IEMoKTsKKyAgICAgIH0pOworICB9IGVsc2UgeworICAgICAgbGV0IG9i
aiA9IHt9OworICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgICAgYy5nZXRGaWVsZC5jYWxsKG9iaik7CisgICAgICB9KTsKKyAg
fQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlk
LXN0b3JlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkLXN0b3Jl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzNDdjZWE2MDAwNWE5YjVmODY4YTBiNTNiZjIxZDc1YzI0ZmJiMDgK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFs
aWQtc3RvcmUuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBzaG91bGRTdG9yZSA9IGZh
bHNlOworCitmdW5jdGlvbiBmb28oKSB7CisgIGNsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMu
aW5pdCgpOworICAgICNmb287CisKKyAgICBpbml0KCkgeworICAgICAgaWYgKHNob3VsZFN0b3Jl
KQorICAgICAgICB0aGlzLiNmb28gPSAxMjsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3IEMo
KTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eworICBpZiAoaSA+IDEwMDApIHsKKyAgICBzaG91bGRTdG9yZSA9IHRydWU7CisgICAgYXNzZXJ0
LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgZm9vKCk7CisgICAgfSk7Cisg
IH0gZWxzZSB7CisgICAgZm9vKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJv
bC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZGF0ZS1jb21waWxl
ZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzMxNGZhOWU3MDQ5ZjFiODBi
MDJmYzBhNzE5NTQ3ZTdhMjFkYjkwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9y
dGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1
bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1l
ICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4
Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHNldEZpZWxk
KHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorICAgIAorICAg
ICAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9J
bmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsK
K30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5n
ZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBpKTsKK30KKworbGV0IEMyID0gZmFj
dG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5n
ZXRGaWVsZCgpLCAndGVzdCcpOworYzIuc2V0RmllbGQoJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1
ZShjMi5nZXRGaWVsZCgpLCAnZm9vJyk7CisKK2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLnNldEZpZWxkLmNhbGwoYzIsICd0ZXN0Jyk7
Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjMi5zZXRGaWVs
ZC5jYWxsKGMsICd0ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1i
b2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2NmYzUzNjRjYTllMDJjZTk1MjNiYWM0MTVjMTgwMTQ2ZTE1Njg5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtcG9s
eW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCits
ZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAg
aW5pdCgpIHsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmll
bGQgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYp
IHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5
cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3Ig
KDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0
RmllbGQoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2Zv
bycgKyBpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhMzI5N2JlZDgyZDdjMGM3
ZTUyZDU1YTc1ZTVhYzIxMTgxYjdjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSwzMiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fQorfQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQgPSAndGVzdCc7CisKKyAgICBzZXRGaWVsZCh2
KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90
eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMu
cHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcpOworICAgIGMuc2V0RmllbGQo
J2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ2ZvbycgKyBp
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRo
LWRpZmZlcmVudC1pZGVudGlmaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS13aXRoLWRpZmZlcmVudC1pZGVudGlmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMzdkODE3ZWRlMTRh
MjAzNWYzNWE2ODhiYTQxNWRhMTVmZDM3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKQEAgLTAs
MCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICAjZmllbGQ7CisgICAgCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisg
ICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShj
bGFzc0RlY2xhcmF0aW9uKTsKK2xldCBDMSA9IGNsYXNzRGVjbGFyYXRpb24oKTsKK2xldCBDMiA9
IGNsYXNzRGVjbGFyYXRpb24oKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
CisgICAgbGV0IGMgPSBpICUgMiA/IG5ldyBDMSA6IG5ldyBDMjsKKyAgICBjLnNldEZpZWxkKCd0
ZXN0JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAndGVzdCcgKyBp
KTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409344</attachid>
            <date>2020-09-21 19:12:27 -0700</date>
            <delta_ts>2020-09-22 17:23:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200921231220.patch</filename>
            <type>text/plain</type>
            <size>166282</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2FmMDRhZDM3ZWNlYWI4ZTNlNzY3MmEyOTJmZjdiMGE3M2I0NTJlLi44OTRmYTNmNjFmYTU0ZjRh
ODJlNmFkZTg5MDQ0ZGFjZTVjNjQwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMjAtMDktMjEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBvcGNvZGUgdG8g
aGFuZGxlIHByaXZhdGUgZmllbGQgc3RvcmFnZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdl
LCB3ZSB3ZXJlIHVzaW5nIGBwdXRfYnlfdmFsX2RpcmVjdGAgYW5kIGluY2x1ZGluZworICAgICAg
ICB0aGUgaW5mb3JtYXRpb24gb2YgYFB1dEtpbmRgIGludG8gYFB1dEJ5VmFsRmxhZ3NgLiBXZSBp
bml0aWFsbHkgZGVjaWRlZAorICAgICAgICB0byB1c2UgYHB1dF9ieV92YWxfZGlyZWN0YCB0byB0
YWtlIGFkdmFudGFnZSBvZiBhbGwgSUMgbWVjaGFuaXNtIGFscmVhZHkKKyAgICAgICAgaW1wbGVt
ZW50ZWQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIGhvd2V2ZXIgdGhlIHNlbWFudGljcyBvZiBwcml2
YXRlIGZpZWxkCisgICAgICAgIGlzIGRpZmZlcmVudCBlbm91Z2ggdG8gY29tcGxpY2F0ZSB0aGUg
dW5kZXJzdGFuZGluZyBvZgorICAgICAgICBgcHV0X2J5X3ZhbF9kaXJlY3RgLgorCisgICAgICAg
IFRoZSBuZXcgaW5zdHJ1Y3Rpb24gaXMgY2FsbGVkIGBwdXRfcHJpdmF0ZV9uYW1lYCBhbmQgaGFz
IGFzIGl0cyBvcGVyYW5kcworICAgICAgICBgYmFzZU9iamVjdGAgd2hlcmUgdGhlIHB1dCBpcyBn
b2luZyB0byBiZSBwbGFjZWQsIHRoZSBgcHJvcGVydHlgCisgICAgICAgIHRoYXQncyBnb2luZyB0
byBiZSBpbnN0YWxsZWQgKGl0IGlzIGFsd2F5cyBhIHByaXZhdGUgc3ltYm9sIG9mIGEKKyAgICAg
ICAgcHJpdmF0ZSBmaWVsZCksIHRoZSBgdmFsdWVgIHdlIGFyZSBnb2luZyB0byBzdG9yZSBhbmQg
dGhlCisgICAgICAgIGBQcml2YXRlRmllbGRQdXRLaW5kYCB0aGF0IGNhbiBiZSBgRGVmaW5lYCBv
ciBgU2V0YC4KKyAgICAgICAgVGhlIGRpZmZlcmVuY2Ugb2YgZWFjaCBgUHJpdmF0ZUZpZWxkUHV0
S2luZGAgaXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgCisgICAgICAgIC0gRGVmaW5lOiBJdCBk
ZWZpbmVzIGEgbmV3IHByaXZhdGUgZmllbGQuIElmIHRoaXMgZmllbGQgaXMgYWxyZWFkeQorICAg
ICAgICBwcmVzZW50LCBpdCB0aHJvd3MgYSBgVHlwZUVycm9yYC4KKyAgICAgICAgLSBTZXQ6IEl0
IHNldHMgdGhlIHZhbHVlIG9mIGEgcHJpdmF0ZSBmaWVsZC4gSWYgdGhlIGZpZWxkIGlzIG5vdAor
ICAgICAgICBwcmVzZW50IGF0IHRoZSBtb21lbnQgb2Ygc2V0LCBpdCB0aHJvd3MgYSBgVHlwZUVy
cm9yYC4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHN1cHBvcnQgb2YgSUMgZm9yIGFs
bCB0aWVycy4gRm9yIERGRyBhbmQgRlRMLCB3ZQorICAgICAgICBhcmUgb25seSBlbW1pdGluZyBJ
QyB3aGVuIHdlIGFyZSBhYmxlIHRvIGVtaXQgYENoZWNrQ29uc3RhbnRgCisgICAgICAgIGZvciBz
dWJzY3JpcHQgaWRlbnRpZmllciBkdXJpbmcgQnl0ZWNvZGUgcGFyc2luZy4gV2UgYXJlIGFkZGlu
ZyBhIG5ldworICAgICAgICBERkcgbm9kZSBjYWxsZWQgYFB1dFByaXZhdGVOYW1lQnlJZGAgdGhh
dCBoYW5kbGVzIHN1Y2ggY2FzZXMgd2hlbiB3ZQorICAgICAgICBoYXZlIGNvbnN0YW50IGlkZW50
aWZpZXJzLgorICAgICAgICBXZSBhcmUgYWxzbyBhZGRpbmcgYSBuZXcgREZHIG5vZGUgYFB1dFBy
aXZhdGVOYW1lYCB0aGF0IGhhbmRsZXMgZ2VuZXJpYworICAgICAgICBjYXNlIG9mIGBwdXRfcHJp
dmF0ZV9uYW1lYC4gVGhlIHN0cmF0ZWd5IHVzZWQgdG8gY29tcGlsZQorICAgICAgICBgcHV0X3By
aXZhdGVfbmFtZWAgaXMgdmVyeSBzaW1pbGFyIHdpdGggd2hhdCB3ZSBhcmUgdXNpbmcgd2l0aAor
ICAgICAgICBgcHV0X2J5X3ZhbFtfZGlyZWN0XWAuIFdlIGZpcnN0IHRyeSB0byBjb21waWxlIGl0
IGFzIGBbTXVsdGldUHV0QnlPZmZzZXRgCisgICAgICAgIHVzaW5nIHByb2ZpbGVkIGluZm9ybWF0
aW9uIGZyb20gTExJbnQgYW5kIEJhc2VsaW5lIGV4ZWN1dGlvbi4gSWYgaXQKKyAgICAgICAgaXMg
bm90IHBvc3NpYmxlLCB3ZSB0aGVuIGVtaXQgYFB1dFByaXZhdGVOYW1lW0J5SWRdYCBub2RlLiBX
ZSBnZXQgYW5vdGhlcgorICAgICAgICBjaGFuY2UgdG8gdHJhbnNmb3JtIGBQdXRQcml2YXRlTmFt
ZUJ5SWRgIGludG8gYFB1dEJ5T2Zmc2V0YCBpZiB3ZSBjYW4gcHJvdmUKKyAgICAgICAgaXRzIHN0
cnVjdHVyZSBzZXQgYXQgY29uc3RhbnQgZm9sZGluZyBwaGFzZS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6Cisg
ICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQcml2YXRl
TmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAg
ICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjp0cnlGb2xkQXNQdXRCeU9mZnNl
dCk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpw
cml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8p
OgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVB1dFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAoSlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOgorICAg
ICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRv
cjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dFByaXZhdGVOYW1lPik6CisgICAgICAgIChK
U0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOiBEZWxldGVk
LgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0UHJp
dmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2Fj
aGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjpmcm9tQnl0ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpz
ZXQpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjppc05vbmUgY29uc3QpOgorICAgICAgICAoSlND
OjpQcml2YXRlRmllbGRQdXRLaW5kOjppc1NldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVGaWVsZFB1dEtpbmQ6OmlzRGVmaW5lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZUZp
ZWxkUHV0S2luZDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRL
aW5kOjpQcml2YXRlRmllbGRQdXRLaW5kKToKKwogMjAyMC0wOS0yMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIERyb3AgT3B0aW9uczo6dXNlQmln
SW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTMxNTlhZmI4NTg0ZDg5
NDBlZDVkNWIzZjI3YTM0NDNlOGYwOGQzMi4uODAwZGVmNGFhOWVjMjY5N2E1MDQxYjgwZGYwOGU3
MTA4NjIzNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ3LDcg
KzU0Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgK
ICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
aAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC05NzEsNiArOTcwLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL09w
dGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQu
aAorICAgIHJ1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5oCiAgICAgcnVudGltZS9Qcml2YXRl
TmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODQyMDZl
N2NhZmUzZGY4YmY4YTI5NzMxZDkwMzUzYzQ0ZGEwOWI4Li5mM2JmYWUxOWIxODJjYjUyNzRiZTYx
MjE5MmQ4NTM2MDZiM2MwZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1
NSw3ICsxMjU1LDYgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0
QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4Njc2QzZFODIzNDY0NjdF
MDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAw
MTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZF
NUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjY0LDYgKzEyNjMsNyBAQAogCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVD
MiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQx
NDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxl
ckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODZCODY5MDEyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjg2OTAwMjRCODlF
QTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMTEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyog
TWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERG
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxNTQsOCArNDE1NCw2IEBACiAJCTg2NzA0
QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBh
dHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFy
ci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc2QzZFNjIz
NDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZh
bEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2NzZDNkU3MjM0NjQ1QjMw
MEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFs
RmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDE3NSw2ICs0MTczLDggQEAKIAkJODZBREQxNDQwRkRERUE5
ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2ZpbGVUcmVlTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI1ODI2QTE0RDM1RDUxMDBBOUMzMDYgLyogVGllcmVk
TU1hcEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpZXJlZE1NYXBB
cnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkI4NjkwMDI0Qjg5RUE0MDA0
ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlRmll
bGRQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Qjg2OTAyMjRCOEEy
MDgwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVy
TUlQUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlck1J
UFMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MzAsNiArNzYzMCw4IEBACiAJ
CQkJMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi8sCiAJCQkJQ0UyMEJE
MDIyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5j
cHAgKi8sCiAJCQkJQ0UyMEJEMDEyMzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCTg2Qjg2OTAyMjRCOEEyMDgwMDQ4N0M5NSAvKiBQ
cml2YXRlRmllbGRQdXRLaW5kLmNwcCAqLywKKwkJCQk4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUg
LyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5
QSAvKiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAvKiBQ
cm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJBIC8q
IFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCkBAIC04NTAxLDggKzg1MDMsNiBAQAogCQkJCTBGOTMz
MjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0QTcx
OEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRBODE4
QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKLQkJCQk4Njc2QzZFNzIzNDY0
NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCi0JCQkJODY3NkM2RTYyMzQ2NDUw
QjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBE
NTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBS
ZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyog
UmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAyMzksNiArMTAyMzksNyBAQAogCQkJCUNFMjBC
RDA3MjM3RDNFNDgwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0I4MURFRjNBQUUwMDJDMDA5RSAvKiBQcmV2ZW50
Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYzREQ1NDFFQTlCNjFFMDAx
MDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZCODY5MDEyNEI4OUVBNDAw
NDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2ODkx
NkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUxMEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAyNzksNyArMTAyODAsNiBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMxRkZE
MyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRBQTE4
QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2
NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5
U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNmY4
ZTI3MTk3MjEzNTU1MTIzOGE3Yjg0NzExYTE1Njc1MDljMzM0MC4uYzVlMmE2NmJjNzIxZTEwNTAz
ZjE1NWVmNjYxNTZkMGE5MGRkM2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAt
MjY5LDcgKzI2OSw2IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29k
ZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCi1ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTk0NCw2ICs5NDMsNyBAQCBydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAKIHJ1bnRpbWUvT3B0aW9ucy5j
cHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcAorcnVudGlt
ZS9Qcml2YXRlRmllbGRQdXRLaW5kLmNwcAogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAK
IHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRv
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CmluZGV4IDJhZjk3NTc3MzIzOWRkMDhkNDkzNDM3NmIyMGI2MzIzZGQ0YmU1YzEuLjQxYWQ3ZjRi
NzRhZDcyNTVkZDUxNjBhYzc3YmI2YzgwM2EzZTljMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDYsMTAgKzQ2LDEwIEBAIHR5cGVz
IFsKICAgICA6TExJbnRDYWxsTGlua0luZm8sCiAgICAgOlJlc3VsdFR5cGUsCiAgICAgOk9wZXJh
bmRUeXBlcywKKyAgICA6UHJpdmF0ZUZpZWxkUHV0S2luZCwKICAgICA6UHJvZmlsZVR5cGVCeXRl
Y29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCi0gICAg
OlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAg
OlN0cnVjdHVyZUlELApAQCAtNTc0LDYgKzU3NCwyMCBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwK
ICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLAogICAgIH0KIAorb3AgOnB1
dF9wcml2YXRlX25hbWUsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHZhbHVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHB1dEtpbmQ6IFByaXZhdGVGaWVsZFB1dEtpbmQsCisg
ICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDogU3RydWN0dXJl
SUQsCisgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICAgICAgb2Zm
c2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAg
IH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFs
UmVnaXN0ZXIsCkBAIC01OTksNyArNjEzLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAg
ICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZsYWdzOiBQ
dXRCeVZhbEZsYWdzLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDI5
ZTdhMTNlZjdiMWQ2MDVlOTgxYTZiZWVhNDA4OTc2YjIyY2ViODcuLjQ2MGU5NzMwMTY2OTNiMTI0
NDVlNDFiMmY4MjlhNmE1ZjZmNzY1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI3LDYgKzIyNyw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3Rl
ciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0b3JHZW5lcmljUG5hbWUsIGVudW1l
cmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAg
VVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wUHV0UHJp
dmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFz
ZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3Rv
ciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3Rv
dHlwZSkKQEAgLTM5NSw2ICszOTYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRl
eEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIGNh
c2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgog
ICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFf
cHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDg0ZjMyNzBjMjk4
MjhkNDZhZmQyMTZmZTMyM2EwMzZhYWE0ODcwNmMuLmZmMmFkZWNmZjI1Y2Y1MTU5Mjk0YzVhYTJk
ZDAxZjQ4YjY3OTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC01NDIsNiArNTQyLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgTElOSyhPcEluQnlWYWwpCiAgICAgICAgIExJTksoT3BQdXRCeVZhbCkKICAgICAgICAg
TElOSyhPcFB1dEJ5VmFsRGlyZWN0KQorICAgICAgICBMSU5LKE9wUHV0UHJpdmF0ZU5hbWUpCiAK
ICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6
ZSkKQEAgLTExMzYsNiArMTEzNywyNSBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImIHZpcwogICAgICAg
ICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCiAgICAgICAgICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0UHJpdmF0
ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVy
ZUlEOworICAgICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgIW5ld1N0cnVjdHVy
ZUlEKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBKU0Nl
bGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtl
ZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0KKyAgICAgICAgICAgICAgICAgICAgdm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9CisgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAg
aWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzMDIsNiArMTMyMiwyMiBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0
cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCisgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAg
ICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEOworICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X25ld1N0cnVjdHVyZUlEOworICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRh
Lm1fcHJvcGVydHkuZ2V0KCk7CisgICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2
bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1
cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtl
ZChwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5o
ZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJ
RCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHB1dF9wcml2YXRlX25hbWUg
dHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAw
OworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICAgICAgbWV0YWRh
dGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5
LmNsZWFyKCk7CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BU
b1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggMzlm
ZWUwYTY2OWEyODI2NTg1YTJhNDkyMmEzODJiZjZiOGEwYWFlMy4uZTA1YTI1NjQ4YTEzYjA1OTcy
ZjY2NGMzN2RlMDhjZDNjODk0OTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJMYWJlbC5oIgogI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNs
dWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVk
ZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0yNTgsNDYgKzI1OCw2IEBAIHN0cnVjdCBG
aXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KLXN0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNpemU+IHsKLSAgICB1c2luZyBU
YXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwotCi0g
ICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29k
ZWQgYXM6Ci0gICAgLy8gICAgICAgICAgaXNTdHJpY3QKLSAgICAvLyAgICAgICAgICAgICB2Ci0g
ICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKLSAgICAvLyAgICAgICAgICAgXgotICAg
IC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3Jl
YXRlIH0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0gMTI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQgPSAyOwotCi0gICAgc3Rh
dGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBm
bGFncykKLSAgICB7Ci0gICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihmbGFncy5pc0RpcmVjdCgpKTsKLSAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGF1dG8gcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoKSk7Ci0gICAgICAgIHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBp
c0RpcmVjdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdl
dFR5cGUgZ3BpKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJv
b2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwotICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7Ci0gICAgICAgIGF1dG8gYWNjZXNzID0g
c3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKLSAgICAg
ICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1v
ZGU6OnNsb3BweSgpOwotICAgICAgICByZXR1cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmUgPwotICAgICAgICAgICAgaXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVh
dGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6Ci0g
ICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlW
YWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6
OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSk7Ci0gICAgfQotfTsKLQogdGVtcGxh
dGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxF
Piwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIHNpemU+OwpAQCAtNDI3LDQgKzM4NywyNCBAQCBzdHJ1Y3QgRml0czxFQ01BTW9kZSwgc2l6
ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8
T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHJpdmF0ZUZpZWxkUHV0S2luZCwgc2l6ZT4g
OiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWlu
dDhfdCwgc2l6ZT47CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhQcml2YXRlRmllbGRQdXRLaW5k
IHB1dE1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y2hlY2socHV0TW9kZS52YWx1
ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252
ZXJ0KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBC
YXNlOjpjb252ZXJ0KHB1dE1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIFByaXZh
dGVGaWVsZFB1dEtpbmQgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHB1dE1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUoQmFz
ZTo6Y29udmVydChwdXRNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5k
ZXggNGYzOTRmMDFkMDViMzBmNDg1OWQ1YTQ1MmE1NzdjNGQyZWM1MWY4YS4uOGJjMTdjODY0NmJj
NzBiZGJlNGZiZWY5YTY5N2M4YzlmYjU4NmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgQnl0ZWNvZGUKICAgICBWTSYgdm0gPSBwcm9maWxlZEJsb2NrLT52bSgpOwogICAg
IAogICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChieXRlY29kZUluZGV4Lm9mZnNldCgpKTsKKworICAgIC8vIFdlIGFyZSBub3QgeWV0IHVzaW5n
IGBjb21wdXRlRnJvbUxMSW50YCBpbiBhbnkgcGxhY2UgZm9yIGBwdXRfcHJpdmF0ZV9uYW1lYC4K
KyAgICAvLyBXZSBjYW4gYWRkIHN1cHBvcnQgZm9yIGl0IGlmIHRoaXMgaXMgcmVxdWlyZWQgaW4g
ZnV0dXJlIGNoYW5nZXMsIHNpbmNlIHdlIGhhdmUKKyAgICAvLyBJQyBpbXBsZW1lbnRlZCBmb3Ig
dGhpcyBvcGVyYXRpb24gb24gTExJbnQuCisgICAgQVNTRVJUKCFpbnN0cnVjdGlvbi0+aXM8T3BQ
dXRQcml2YXRlTmFtZT4oKSk7CisKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlJZD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHBy
b2ZpbGVkQmxvY2spOwogCkBAIC0yNzEsNyArMjc3LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IGIKICAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0
ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAotUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBi
b29sIGlzRGlyZWN0KQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0LCBQcml2YXRlRmllbGRQdXRLaW5kIHBy
aXZhdGVGaWVsZFB1dEtpbmQpCiB7CiAgICAgaWYgKHBhcnNlSW5kZXgoKnVpZCkpCiAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwpAQCAtMjk0LDYgKzMwMCwxMiBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU3RydQogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwog
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRs
eSh1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7
CisgICAgICAgICAgICAvLyBXZSBjYW4ndCBoYXZlIGEgdmFsaWQgb2Zmc2V0IGZvciBzdHJ1Y3R1
cmVzIG9uIGBQdXRQcml2YXRlTmFtZUJ5SWRgIGRlZmluZSBtb2RlCisgICAgICAgICAgICAvLyBz
aW5jZSBpdCBtZWFucyB3ZSBhcmUgcmVkZWZpbmluZyBhIHByaXZhdGUgZmllbGQuIEluIHN1Y2gg
Y2FzZSwgd2UgbmVlZCB0byB0YWtlIAorICAgICAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93
IGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5l
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CisKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yT3JWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhN
YWtlc0NhbGxzKTsKIApAQCAtMzE2LDcgKzMyOCwxNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
dQogICAgICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAKKworICAgICAgICAvLyBXZSBj
YW4gaGF2ZSBhIGNhc2Ugd2l0aCBQdXRQcml2YXRlTmFtZUJ5SWQgaW4gc2V0IG1vZGUgYW5kIGl0
CisgICAgICAgIC8vIHNob3VsZCBuZXZlciBjYXVzZSBhIHN0cnVjdHVyZSB0cmFuc2l0aW9uIGJl
Y2F1c2UgaXQgbWVhbnMgd2UgYXJlCisgICAgICAgIC8vIHRyeWluZyB0byBzdG9yZSBpbiBhIG5v
dCBpbnN0YWxsZWQgcHJpdmF0ZSBmaWVsZC4gV2UgbmVlZCB0byB0YWtlCisgICAgICAgIC8vIHNs
b3cgcGF0aCB0byB0aHJvdyBleGNwZXRpb24gaWYgaXQgZXZlciBnZXRzIGV4ZWN1dGVkLgorICAg
ICAgICBpZiAocHJpdmF0ZUZpZWxkUHV0S2luZC5pc1NldCgpKQorICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisKICAgICAgICAgLy8gT3VyIGh5cG90aGVz
aXMgaXMgdGhhdCB3ZSdyZSBkb2luZyBhIHRyYW5zaXRpb24uIEJlZm9yZSB3ZSBwcm92ZSB0aGF0
IHRoaXMgaXMgcmVhbGx5CiAgICAgICAgIC8vIHRydWUsIHdlIHdhbnQgdG8gZG8gc29tZSBzYW5p
dHkgY2hlY2tzLgogICAgIApAQCAtMzMxLDYgKzM1MCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
dHJ1CiAgICAgCiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNl
dDsKICAgICAgICAgaWYgKCFpc0RpcmVjdCkgeworICAgICAgICAgICAgQVNTRVJUKHByaXZhdGVG
aWVsZFB1dEtpbmQuaXNOb25lKCkpOwogICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJh
dGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzQ29uY3VycmVudGx5KAogICAgICAgICAg
ICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkKTsKICAgICAgICAgICAgIGlm
ICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCmluZGV4IDRkZGZmYmI4OGM4MDM3MWY4NjgzZTU3M2YyYmZl
Y2Q3MzkxN2ZkYTkuLmY4NzJkNGNlMmY2MWNjY2YzOWNjOGZjNDNkODMzNzA5YzkzZWI5ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiRXhp
dEZsYWcuaCIKICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVs
ZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJ
bmZvU3VtbWFyeS5oIgogCkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01h
cCYsIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxs
TGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21w
dXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29t
cHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQpOwogICAgIAog
ICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJs
b2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250
ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVm
NjQwYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCi0KLSNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3Bh
Y2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxG
bGFncyBmbGFncykKLXsKLSAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxh
Z3MuaXNEaXJlY3QoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7Ci0gICAg
aWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwg
IlByaXZhdGVGaWVsZCtQdXQiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkK
LSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlW
YWxGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkZjJkMWIzNmM2MWNl
MzAyYmY5YzIzODI1NmE3MDU2ODc2NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZs
YWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRUNNQU1vZGUuaCIKLSNpbmNsdWRlICJT
dHJ1Y3R1cmVJRFRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIGNsYXNzIFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIFB1dCwKLSAgICBD
cmVhdGUsCi19OwotCi1jbGFzcyBQdXRCeVZhbEZsYWdzIHsKLXB1YmxpYzoKLSAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKLSAgICB9Ci0K
LSAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVy
dHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKLSAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEg
c2V0dGVyLgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3Qo
RUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0
cnVlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZs
YWdzIGNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0
ZSwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFn
cyBjcmVhdGVQdXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFN
b2RlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rp
cmVjdDsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9k
ZTsgfQotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQotICAgIGJvb2wgaXNQ
cml2YXRlRmllbGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQotICAgIGJvb2wgaXNQcml2YXRl
RmllbGRQdXQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0OyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpDcmVhdGU7IH0KLQotcHJpdmF0ZToKLQotICAgIGNvbnN0ZXhwciBQdXRCeVZh
bEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNE
aXJlY3QoaXNEaXJlY3QpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQotICAgICAgICA6IG1faXNEaXJl
Y3QodHJ1ZSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQotICAg
ICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgbV9p
c0RpcmVjdDsKLSAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDsKLSAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2lu
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCBmOTBk
NTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhLi4yMDJmN2MzMzk4MTgxMWFkZGVm
YjBjNjJmYjRmNmNhMDZiZjQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRLaW5kLmgKQEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0
S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUsIERpcmVj
dFByaXZhdGVGaWVsZFB1dCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERp
cmVjdFByaXZhdGVGaWVsZERlZmluZSwgRGlyZWN0UHJpdmF0ZUZpZWxkU2V0IH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzMzI4ZjZhNDZkNzdkYjRkY2ZhM2M4
NGQ0MmJhNjc3YjVjMzAxNzI3Li5kZDllN2Y3OWY0ZWZjMTI5ZTg5YTc3Mjc0MGU0YTg4ODZlNzJh
NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgiCkBAIC0yNzI2LDcgKzI3MjcsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRo
aXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVj
bWFNb2RlKCkpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzUw
LDEzICsyNzUxLDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50
ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5
VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICBPcFB1dFByaXZh
dGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0
S2luZDo6ZGVmaW5lKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxE
aXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpj
cmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6
OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpz
ZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDkw
MmYyMDcyYjYxNjM2ZGFhZmNjZGQ2YzQzNGU0MWEzYjE1M2ZlZC4uNmI4NzdlZTNiOGJlNWVlZDlm
NTYzZGNhNTAxYWVlYmYzZTJjOGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAyOSwxNyAr
NDAyOSwyNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICAgICAgCisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJ
ZDoKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQ
dXRCeUlkRGlyZWN0OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgp
KSB7CisgICAgICAgICAgICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGly
ZWN0IHx8IG5vZGUtPm9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkOworICAgICAgICAgICAgYXV0
byBwcml2YXRlRmllbGRQdXRLaW5kID0gbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRlTmFtZUJ5SWQg
PyBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkgOiBQcml2YXRlRmllbGRQdXRLaW5kOjpub25l
KCk7CiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0
cnVjdHVyZVNldCgpLAogICAgICAgICAgICAgICAgIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS51aWQoKSwKLSAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwor
ICAgICAgICAgICAgICAgIGlzRGlyZWN0LCBwcml2YXRlRmllbGRQdXRLaW5kKTsKIAogICAgICAg
ICAgICAgYm9vbCBhbGxHb29kID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1w
bGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA3ZmJhNTNiNWU3OTdhMTZhZjFiNzRhMzI2MjFhZDk5MDkzMTQyZjkxLi5lZTMz
N2ViMmZhOTNhMGUwZmYzOTg2OWU2YmU1OTZjNGIzYTMxZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsOSArNzAsOSBAQAog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVs
ZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlk
U3RhdHVzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlZ0V4cFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5n
Q29uc3RydWN0b3IuaCIKQEAgLTI1Miw2ICsyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBOb2Rl
KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBO
b2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3Qs
IEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBFQ01BTW9kZSk7CiAKKyAgICB2b2lkIGhhbmRs
ZVB1dFByaXZhdGVOYW1lQnlJZCgKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmLCBQcml2YXRlRmllbGRQdXRLaW5kKTsKKwogICAgIHZvaWQgaGFuZGxlRGVsZXRl
QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0
YXR1cywgRUNNQU1vZGUpOwogICAgIApAQCAtMTI2NywxOCArMTI3MCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgQnl0ZWNvZGU+Ci1FQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRlY29kZSkK
LXsKLSAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKLX0KLQotdGVtcGxhdGU8PgotQUxX
QVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFs
RGlyZWN0IGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdldGFibGVC
bG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2Rl
SW5kZXgpOwpAQCAtNTAxNSw2ICs1MDA2LDEzMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRQ
cml2YXRlTmFtZUJ5SWQoCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKKyAgICBjb25z
dCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZh
dGVGaWVsZFB1dEtpbmQpCit7CisgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwg
IXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5p
bmcoKSkgeworICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRl
TmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQp
LCBiYXNlLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHB1
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1f
cGxhbi5pc0ZUTCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCisgICAgICAgICAgICB8
fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8
fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2
YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtp
bmQpLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAg
ICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAg
IAorICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBmb3IgKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7Cisg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVy
ZSk7CisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRy
YW5zaXRpb24pCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTXVsdGlQ
dXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNldERhdGEuYWRk
KCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJpYW50cygpOwor
ICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAg
ICAgYWRkVG9HcmFwaChNdWx0aVB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJhc2UsIHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocHV0QnlJZFN0YXR1
cy5udW1WYXJpYW50cygpID09IDEpOworICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50
ID0gcHV0QnlJZFN0YXR1c1swXTsKKyAgICAKKyAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7
CisgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBBU1NFUlQocHJp
dmF0ZUZpZWxkUHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1
dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsK
KyAgICAKKyAgICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCwgdmFs
dWUpOworICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAg
ICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFu
c2l0aW9uOiB7CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkp
OworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBhZGRUb0dyYXBo
KENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRp
dGlvblNldCgpKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZUJ5SWQs
IE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByaXZhdGVGaWVsZFB1dEtpbmQpLCBiYXNlLCB2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNT
RVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAKKyAgICAgICAgTm9kZSogcHJvcGVy
dHlTdG9yYWdlOworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3Ry
YW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHZhcmlhbnQu
cmVhbGxvY2F0ZXNTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdyb3dpbmcg
dGhlIHByb3BlcnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2UncmUKKyAgICAg
ICAgICAgIC8vIHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAg
ICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworICAgIAorICAg
ICAgICAgICAgaWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRv
R3JhcGgoCisgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcElu
Zm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAg
ICAgICAgICAgIGJhc2UsIGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
dmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFz
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBh
ZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
U3RvcmFnZUFjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRk
KCk7CisgICAgICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRh
dGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICAKKyAgICAg
ICAgLy8gTk9URTogV2UgY291bGQgR0MgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHNvbWVvbmUgY291
bGQgaW5zZXJ0IGFuIG9wZXJhdGlvbiB0aGF0IEdDcy4KKyAgICAgICAgLy8gVGhhdCdzIGZpbmUg
YmVjYXVzZToKKyAgICAgICAgLy8gLSBUaGluZ3MgYWxyZWFkeSBpbiB0aGUgc3RydWN0dXJlIHdp
bGwgZ2V0IHNjYW5uZWQgYmVjYXVzZSB3ZSBoYXZlbid0IG1lc3NlZCB3aXRoCisgICAgICAgIC8v
ICAgdGhlIG9iamVjdCB5ZXQuCisgICAgICAgIC8vIC0gVGhlIHZhbHVlIHdlIGFyZSBmaXhpbmcg
dG8gcHV0IGlzIGdvaW5nIHRvIGJlIGtlcHQgbGl2ZSBieSBPU1IgZXhpdCBoYW5kbGluZy4gU28K
KyAgICAgICAgLy8gICBpZiB0aGUgR0MgZG9lcyBhIGNvbnNlcnZhdGl2ZSBzY2FuIGhlcmUgaXQg
d2lsbCBzZWUgdGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICB2
YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2Uo
KSkKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwg
YmFzZSwgcHJvcGVydHlTdG9yYWdlKTsKKyAgICAKKyAgICAgICAgLy8gRklYTUU6IFB1dFN0cnVj
dHVyZSBnb2VzIGxhc3QgdW50aWwgd2UgZml4IGVpdGhlcgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTIxIG9yCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MjQuCisgICAgICAgIGFkZFRv
R3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIAorICAg
ICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKKyAgICAgICAgICAgIG1f
Z3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfSB9Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBh
cmVUb1BhcnNlQmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MDY0LDYgKzYxNzks
NTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
KyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAg
ICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAg
ICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CisgICAgICAgICAgICBib29s
IHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAg
ICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXM7CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRD
b2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKSkuYnlWYWxJbmZvOworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2Vs
aW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KKyAgICAgICAgICAgICAgICAvLyBBdCB0
aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLiBGb3IgYHB1dF9wcml2YXRlX25hbWVg
LCB3ZSBtaWdodCBoYXZlIHNvbWUgaW5mbyBmcm9tCisgICAgICAgICAgICAgICAgLy8gTExJbnQg
SUMsIGluY2x1ZGluZyBjYWNoZWQgY2VsbCB0aGF0IHdlIGNvdWxkIHVzZSBpZiBCeVZhbCBpcyBu
b3QgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTY3NzkKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIAor
ICAgICAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAg
ICAgICAgICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aAorICAgICAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAg
ICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyID0gYnlWYWxJbmZvLT5jYWNoZWRJZDsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlm
aWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZp
ZXIuY2VsbCgpKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25z
dGFudCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgICAgICBw
dXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBjdXJyZW50
Q29kZU9yaWdpbigpLCB1aWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHRyeUNvbXBpbGVBc1B1dEJ5T2Zmc2V0KQorICAgICAgICAgICAgICAg
IGhhbmRsZVB1dFByaXZhdGVOYW1lQnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcElu
Zm8oKSwgT3BJbmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7
CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcml2YXRlX25hbWUpOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWZpbmVEYXRhUHJv
cGVydHk+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7
CkBAIC03NTE4LDcgKzc2NzksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXM7CiAg
ICAgICAgICAgICAgICAgaWYgKHVpZCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlkLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHVpZCwgZmFsc2UsIFByaXZhdGVGaWVsZFB1dEtp
bmQ6Om5vbmUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBz
dGF0dXMgPSBQdXRCeUlkU3RhdHVzKFB1dEJ5SWRTdGF0dXM6OlRha2VzU2xvd1BhdGgpOwogICAg
ICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAxCkBAIC04Mjk1LDcgKzg0
NTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRl
Y29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qs
IG9zckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKKyAgICAgICAgICAgIGhhbmRsZVB1
dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAg
IH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTgzMDYsNyArODQ2Nyw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBC
eXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3Bl
cnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSBy
b29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVj
dCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkp
LCBPcEluZm8oZWNtYU1vZGUoYnl0ZWNvZGUpKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6
VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJh
eU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBt
X2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0
cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1h
eSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMmRlNTVhZWQyN2MxZWEzNDZmOGQwYzVhY2Q2
NDY4ZGVhY2JmZTM1MC4uMTZlYTI1ZDNkN2RiYzFhMTJmMjljYzY3ZTMzYjI2NmRmNDk0N2U0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MjkzLDYgKzI5Myw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9zdXBl
cl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2Fz
ZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKICAg
ICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9z
dHJpbmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJp
bmcgdGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggY2ZlMWY4MTdhNTNmMjA2ZDI4ZjcwNzU3OWM4YzllNDdm
YWI4YmRiOC4uZDk1OWIwMWRlMGMxYzIxZTJmYjc4YzdjMjBiZDY3MGZlMWZkN2FiMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTY3MCw2ICs2NzAsOCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAg
Y2FzZSBQdXRQcml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6
CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA1ZTJiZDljOTVlMDgyYjI4MDNj
ZmI5ZDkwM2I5NTYyNzNkOGZlMzI5Li4wNThkY2JmZjljNjA0Y2IzZWM0YjZjODU5ZjEzY2U5OTU4
YzI4ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjU4LDEwMiArNjU4LDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogeworICAgICAgICAgICAgICAgIGJvb2wg
aXNEaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5v
ZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVj
dCwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNh
c2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOiB7Ci0gICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4g
PSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5j
aGlsZDEoKTsKLSAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7
Ci0gICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS51aWQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBB
U1NFUlQoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9k
ZShjaGlsZCk7Ci0gICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKLQotICAgICAgICAgICAgICAgIGlmICghYmFz
ZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihvcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1
Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUo
KSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQo
c3RhdHVzLm51bVZhcmlhbnRzKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1W
YXJpYW50cygpID4gMSAmJiAhbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBib29sIGFsbEdvb2QgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwotICAgICAgICAgICAgICAgIFRy
YW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBQ
dXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiA6
IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxp
ZGl0eShzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIENoZWNrU3RydWN0dXJlLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9y
VXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIG5vZGUt
Pm9yaWdpbiwgY29uZGl0aW9uLm9iamVjdCgpLCBLbm93bkNlbGxVc2UpKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICghYWxsR29vZCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50
LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy
YW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBuZXdTdHJ1
Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5hZGQobmV3U3RydWN0dXJl
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghYWxsR29vZCkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvLyBQdXNoIENGQSBvdmVyIHRoaXMg
bm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KLSAgICAgICAgICAgICAgICBtX2lu
dGVycHJldGVyLmRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLm9ic2VydmVUcmFuc2l0aW9ucyhpbmRleEluQmxvY2ssIHRyYW5zaXRpb25zKTsKLSAg
ICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jaGFuZ2VT
dHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgYWxy
ZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBm
b2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKLSAg
ICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJz
KCkuZW5zdXJlKHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygp
ID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9j
aywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJOdW1iZXIpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBBU1NFUlQobV9ncmFwaC5tX3BsYW4uaXNGVEwoKSk7Ci0KLSAgICAgICAgICAgICAgICBNdWx0
aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5h
ZGQoKTsKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cyA9IHN0YXR1cy52YXJpYW50cygp
OwotICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVt
YmVyOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb011bHRpUHV0QnlPZmZzZXQoZGF0
YSk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG5vZGUtPm9wKCkgPT0gUHV0QnlJ
ZERpcmVjdDsKKyAgICAgICAgICAgICAgICB0cnlGb2xkQXNQdXRCeU9mZnNldChub2RlLCBpbmRl
eEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgaXNEaXJlY3QsIFByaXZh
dGVGaWVsZFB1dEtpbmQ6Om5vbmUoKSwgY2hhbmdlZCwgYWxyZWFkeUhhbmRsZWQpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0xNDcwLDYgKzEzODUsOTUgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIHRyeUZvbGRBc1B1dEJ5
T2Zmc2V0KE5vZGUqIG5vZGUsIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgRWRnZSBiYXNlRWRnZSwg
RWRnZSB2YWx1ZUVkZ2UsIGJvb2wgaXNEaXJlY3QsIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0
ZUZpZWxkUHV0S2luZCwgYm9vbCYgY2hhbmdlZCwgYm9vbCYgYWxyZWFkeUhhbmRsZWQpCisgICAg
eworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgTm9k
ZSogYmFzZU5vZGUgPSBiYXNlRWRnZS5ub2RlKCk7CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQgPSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCk7CisKKyAgICAgICAgQVNT
RVJUKGJhc2VFZGdlLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKworICAgICAgICBBYnN0cmFjdFZh
bHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShiYXNlTm9kZSk7CisgICAgICAgIEFic3Ry
YWN0VmFsdWUgdmFsdWVWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZSh2YWx1ZUVkZ2UpOworCisgICAg
ICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAorICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iob3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpLAorICAgICAgICAgICAgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAorICAg
ICAgICAgICAgaXNEaXJlY3QsIHByaXZhdGVGaWVsZFB1dEtpbmQpOworCisgICAgICAgIGlmICgh
c3RhdHVzLmlzU2ltcGxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJU
KHN0YXR1cy5udW1WYXJpYW50cygpKTsKKworICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgPiAxICYmICFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGNoYW5nZWQgPSB0cnVlOworCisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgbmV3U2V0OworICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRyYW5zaXRpb25zOworICAgICAg
ICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRp
dGlvbiA6IHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC53YXRjaENvbmRpdGlvbihjb25kaXRpb24pKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9u
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHkoc3RydWN0dXJlKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hl
Y2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLAorICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtub3du
Q2VsbFVzZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5k
KCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBBU1NF
UlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSB8fCBwcml2YXRlRmllbGRQdXRLaW5kLmlz
RGVmaW5lKCkpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0
dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAg
IFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJl
KSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5raW5kKCkgPT0gUHV0
QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcml2YXRlRmll
bGRQdXRLaW5kLmlzTm9uZSgpIHx8IHByaXZhdGVGaWVsZFB1dEtpbmQuaXNTZXQoKSk7CisgICAg
ICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
KyAgICAgICAgbV9pbnRlcnByZXRlci5kaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgIG1f
aW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4SW5CbG9jaywgdHJhbnNpdGlvbnMp
OworICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5jaGFuZ2VTdHJ1Y3R1cmUo
bV9ncmFwaCwgbmV3U2V0KSA9PSBDb250cmFkaWN0aW9uKQorICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKKworICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERv
bid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhp
cy4KKworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyUHV0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQ
dXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgc3RhdHVzKSksCisgICAgICAgICAg
ICBFZGdlKGJhc2VOb2RlKSk7CisKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAgICAgICAgaWYgKHN0YXR1cy5u
dW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleElu
QmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1f
cGxhbi5pc0ZUTCgpKTsKKworICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1f
Z3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFu
dHMgPSBzdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9
IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIG5vZGUtPmNvbnZlcnRUb011bHRpUHV0QnlPZmZz
ZXQoZGF0YSk7CisgICAgfQorCiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKICAg
ICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJldGVy
OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCAxOGI4ODM5NjliNjkwZjEzZjZmZmJmYjdkNzU2YmIzY2Ey
MjA4Yzc5Li43ZGYzZDM1ZDQyNjI4ZGNkMDk0YmI1ZDdjOTdhMDE2MTY2NDM3MGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNiArMzIxLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0
dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZh
bDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlk
OgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNl
IFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCBiNmMwYmI4YmE5OTBmZmYzNWMwMDNjODYwMTdlZTA2NzM0MTBlMDM4Li41ZWJhN2Qx
ZjJjNjhkMDRjOTFlZTYwMTQ5MWExNzhmY2E4MDE5YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5MDUsMTIgKzE5MDUsMjAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKworICAgICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5z
dGFuY2U6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgICAgICBjYXNlIENyZWF0ZUdl
bmVyYXRvcjoKICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgY2Fz
ZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAg
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBhNWNkZjFhYTZmM2QyZDli
MWU4NmVkNWJkMjMxOGI2MmQ2YWM4ZWU5Li4wNGUwMjVhYjJmMTFiZTI4NjU2YTU5YjU3MTI2NTBj
ZjU4N2QzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIsNiArNTIs
NyBAQAogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUu
aCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKQEAgLTYxNSw3ICs2MTYsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QdXRCeU9mZnNldChTdG9yYWdlQWNjZXNzRGF0YSYg
ZGF0YSwgRWRnZSBzdG9yYWdlLCBFZGdlIGJhc2UpCiAgICAgewotICAgICAgICBBU1NFUlQobV9v
cCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRG
bHVzaCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQpOworICAgICAgICBBU1NFUlQobV9vcCA9
PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1dEJ5SWRGbHVz
aCB8fCBtX29wID09IE11bHRpUHV0QnlPZmZzZXQgfHwgbV9vcCA9PSBQdXRQcml2YXRlTmFtZUJ5
SWQpOwogICAgICAgICBtX29wSW5mbyA9ICZkYXRhOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGls
ZDMoY2hpbGRyZW4uY2hpbGQyKCkpOwogICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDIoYmFzZSk7
CkBAIC02MjUsNyArNjI2LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRvTXVs
dGlQdXRCeU9mZnNldChNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGlyZWN0IHx8IG1fb3Ag
PT0gUHV0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29w
ID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBQdXRQ
cml2YXRlTmFtZUJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9IGRhdGE7CiAgICAgICAgIG1fb3Ag
PSBNdWx0aVB1dEJ5T2Zmc2V0OwogICAgIH0KQEAgLTEwODcsNiArMTA4OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoK
ICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWVCeUlkOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgzLDYgKzIyODUsMTkgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzUHJpdmF0ZUZpZWxkUHV0S2luZCgpCisg
ICAgeworICAgICAgICBpZiAob3AoKSA9PSBQdXRQcml2YXRlTmFtZSB8fCBvcCgpID09IFB1dFBy
aXZhdGVOYW1lQnlJZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRL
aW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcml2YXRlRmllbGRQdXRLaW5kKCkpOwor
ICAgICAgICByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZnJvbUJ5dGUobV9vcEluZm8yLmFz
PHVpbnQ4X3Q+KCkpOworICAgIH0KKwogICAgIGJvb2wgaGFzQXJpdGhNb2RlKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCmluZGV4IDY5NjIxOWM4ZGYxMWQzMzZkYzcwZjlhNGZhODBkOGI4NTM0MjhiMGEuLmRhODdk
M2YxYzJmYWI2MGRjYTJmMWViYThlNjhjY2RkZTA2Mzc1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxEaXJlY3QsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhQdXRQcml2YXRlTmFtZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lQnlJZCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDBlNGMzMWJmMGQ3ZTU4NThiYmRi
NzQ0MjMwYTYzNjdjNGZhMGI2MzkuLjQzMzUyNjU5YjJhZTBhYzM1OTdkOWQ1ZGE4ODkwZWU5OGE4
NDQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJERkdSZWdp
c3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiSGVhcENlbGwuaCIKKyNpbmNsdWRlICJQcml2
YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYg
RU5BQkxFKERGR19KSVQpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBPcEluZm8gewogICAgIGV4
cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3AuYXNCaXRzKCkpIHsgfQogICAg
IGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRzKCkpKSB7IH0KICAgICBl
eHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1
ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5k
KSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IDlkM2Y4OWU2NmVhZTY4YzZjZDE1NDNjNzdjNTdmNTkwZDk3ODc0NzguLmZmMzYyODQwMjE5
YWI0MmNhNzA3NTdjZDllNWRjYWQ5ZDZlMmRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC0xMzc4LDYgKzEzNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVO
YW1lQnlJZDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dElu
dGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGIwN2NiYTcwZmUxOWM0MTBm
MmVkNWE0MDc2ZDg0NmEyN2QxZjFjZjUuLjkxN2RlMDJmZTZiZTI4YmMzYzg3NjkyZGIwYTU3ZmM5
ZTg0Mjc0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC01MjYsNiArNTI2LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNl
IFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGUzMGQ2NmUwODE5
ZmMxNDEzZTZmY2Q0YTYyYmMxZGU1ZWQxNTVhYzAuLmQzMDRkYjc0MzYzYmE3YjI0ZTIwYmE3M2I2
OGIyODFlYmFkODI5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI0LDYgKzM1MjQsNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDMoKSk7CisKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5VmFsdWUuZ3ByKCk7CisKKyAgICBzcGVjdWxh
dGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5R1BSKTsKKworICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihub2RlLT5wcml2YXRlRmllbGRQdXRL
aW5kKCkudmFsdWUoKSkpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBub1Jl
c3VsdChub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZChOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVn
cygpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
KworICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBz
byB3ZSBkb24ndCBuZWVkCisgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KKyAgICBhdXRvIHB1dEtp
bmQgPSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IERpcmVjdFByaXZh
dGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQzOTYsNyArMTQ0MzQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2Rl
LCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFiNjMyMTdl
MzZjNzFlYjFlZjBhMzZkODkyYzBlNjFkMjBmZTNlNTIuLmYwOGRmZTc2MjcyYWI0NDg1MmJlNDBk
MWZkY2NlZDcyZDM4ODIwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKQEAgLTEzNjAsNiArMTM2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2Um
IGNoaWxkMiwgRWRnZSYgY2hpbGQzKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckNlbGxX
aXRoU3ltYm9sKE5vZGUqLCBFZGdlJiBjaGlsZDEsIEVkZ2UmIGNoaWxkMiwgRWRnZSYgY2hpbGQz
KTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5h
bWVCeUlkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3Ry
dWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDk3NGU3YTk2YThhYTJlZDI3MDgxMjVhZjRlMGEx
YzM2OGY4ZjRkNWEuLjYwOTUzMWI4ZjU2NGI5ZDlhYzg2ZmE4ZmFlOGUzMzBmZGQwMDJlZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtMjU5MCw2ICsyNTkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2
YXRlTmFtZTogeworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAg
IGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDAzOTMwN2YxMmQ5ZjU1MDFjZmI2M2EzYzNkMjNmMTEy
YzYzNWQ5NTMuLmMzMjM5Mzg2MDIyNTE3YmU5ZTRiMzUwZWU3ZmIzYWU5YmJmMzBlNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtMjk0OCw2ICsyOTQ4LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZTog
eworICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFs
QWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggMDcxNTNiOGU0NzEyZjY4MjliNmVi
YzYzMjE3NDY2ZjgzZDQ2YzFjNC4uNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQz
OWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgZW1pdCBJQyBjb2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlk
ZW50aWZpZXIgYW5kIHdlIG5lZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICAgICAgICAvLyBi
YXJyaWVyIGZvciBpdC4gT24gUHV0UHJpdmF0ZU5hbWUsIHdlIHBlcmZvcm0gc3RvcmUgYmFycmll
ciBkdXJpbmcgc2xvdyBwYXRoIGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBjb25zaWRlckJh
cnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0
QnlJZEZsdXNoOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4MGIxNjg0NGFhYmFj
ZDg1NjY5NmQ4NDVmODFjM2M2Zjk3NzM5N2EuLmI2YTgyYzcxZDQ0ZTk0N2NlMjlkMmUyNzliMGMw
MzY4ZmRmYWMzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTM5NCw2ICszOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgY2FzZSBQdXRC
eVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRQcml2
YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJH
ZXRCeVN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCBhY2E5ZTQ0YmRhYTg0NDk4ODQ0MWE5ZDc5N2ExZGM2OThlZWQ3OTBiLi4zNDdh
Nzc0NGE5NGM1ZTk3YWIxMzc5Y2I2YTg1OTk1MDRmNTQwMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDE3LDYgKzEwMTcsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFB1dFByaXZhdGVOYW1lOgorICAgICAgICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAg
ICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CiAgICAg
ICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAgLTM5NDUsNiArMzk1MSwzMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhp
c1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVQ
dXRQcml2YXRlTmFtZUJ5SWQoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZH
IGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gY2hlY2sgaXQgaGVy
ZS4KKyAgICAgICAgYXV0byBwdXRLaW5kID0gbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCku
aXNEZWZpbmUoKSA/IERpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IERpcmVjdFByaXZhdGVGaWVs
ZFNldDsKKyAgICAgICAgY2FjaGVkUHV0QnlJZChtX25vZGUsIGJhc2UsIHZhbHVlLCBFQ01BTW9k
ZTo6c3RyaWN0KCksIHB1dEtpbmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dFByaXZh
dGVOYW1lKCkKKyAgICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKFZvaWQsIG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywKKyAgICAgICAgICAgIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCks
IG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkp
OworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUF0b21pY3NSZWFkTW9kaWZ5V3JpdGUoKQogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTQxOTEsMTQgKzQyMjMsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkK
KyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoTm9kZSogbm9kZSwgTFZhbHVlIGJhc2UsIExWYWx1ZSB2
YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKICAgICB7Ci0gICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Ci0KLSAgICAgICAgTm9kZSog
bm9kZSA9IG1fbm9kZTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCiAgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKQEAgLTQyMTQsNyArNDI0
Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0g
ICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKICAgICAgICAgCiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBA
IC00MjMzLDcgKzQyNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIs
IGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJl
Y3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOwor
ICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtNDI2MSw2ICs0Mjg4LDE3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgfQorCisgICAg
dm9pZCBjb21waWxlUHV0QnlJZCgpCisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBhdXRvIHB1dEtp
bmQgPSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3Q7Cisg
ICAgICAgIGNhY2hlZFB1dEJ5SWQobm9kZSwgYmFzZSwgdmFsdWUsIG5vZGUtPmVjbWFNb2RlKCks
IHB1dEtpbmQpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0ZXJmbHkoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggZDk2NTg1YjEw
NTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNS4uNzMxNzEwMDk2Y2YzZTI0OThhZTQ1ZGRh
MjZhYTgyZTc5Y2Q0NmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIK
QEAgLTEzOSw5ICsxMzksOSBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIK
KyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3Mu
aCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggNzYyNTIwMTk3OGEyZTZhODlhM2VhNDEyOGY2NDA3NjM3
OTU2ZTgyMi4uOWFkMmYzYmRlMmFlZGI5NjQwMWJlZjBlYjJkMmM2MjNmZGZkN2ZhNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDI2LDYgKzQyNiw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX3B1dF9wcml2YXRlX25hbWUpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKQpAQCAtNTg3LDYgKzU4OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X3ByaXZh
dGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCkBAIC05MDIsNyArOTA0LDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1
bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5v
dEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0gICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJh
ZFR5cGVKdW1wKSk7CisKKyAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlw
ZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKKyAgICAgICAgICAgIGF1
dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7Cisg
ICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKKyAgICAg
ICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcCkpOworCiAgICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKICAg
ICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5
VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7CiAgICAgICAgICAgICBhdXRv
IHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5zbG93UGF0aFRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNTA4YWY1MGY2
MWViMzE2ZmUzMzM5YTk3ZDUwZWM1NGIxOTU2Yzc5Ny4uYjQ1YmUzYWQ1MDI3OTE1MGI3OTI0M2Ew
NGZmYmVjMTFmOTMxZjk4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03MSw2ICs3MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IE9wUHV0QnlWYWw7CiAgICAgc3RydWN0
IE9wUHV0QnlWYWxEaXJlY3Q7CisgICAgc3RydWN0IE9wUHV0UHJpdmF0ZU5hbWU7CiAgICAgc3Ry
dWN0IE9wUHV0VG9TY29wZTsKIAogICAgIHN0cnVjdCBDYWxsUmVjb3JkIHsKQEAgLTE2MSw2ICsx
NjIsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAg
IEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVt
cCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJnZXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBuZXh0SG90UGF0aFRhcmdldCkKKyAgICAgICAgICAgIDogYnlWYWxJbmZvKGJ5VmFsSW5mbykK
KyAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQorICAgICAgICAgICAg
LCBub3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQorICAgICAgICAgICAgLCBkb25lVGFyZ2V0KGRv
bmVUYXJnZXQpCisgICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5leHRIb3RQYXRoVGFy
Z2V0KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
bzsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4OwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXA7CkBAIC0yMzQsNiArMjQ0LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0QnlWYWxX
aXRoQ2FjaGVkSWQ8T3A+KGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHV0S2luZCwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRQcml2
YXRlTmFtZVdpdGhDYWNoZWRJZChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgSklUIGppdCh2
bSwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlSW5kZXggPSBieVZhbElu
Zm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRQcml2
YXRlTmFtZVdpdGhDYWNoZWRJZChieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlSGFzSW5kZXhlZFBy
b3BlcnR5KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CkBAIC0yNTks
NiArMjc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAK
KyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5
VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIENhY2hlYWJsZUlkZW50aWZpZXIpOworCiAgICAg
ICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiwgUmV0
dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIAogICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwpA
QCAtNDA2LDExICs0MjUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gRGV0ZXJt
aW5lcyB0aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisgICAgICAgIFByaXZhdGVGaWVsZFB1dEtp
bmQgcHJpdmF0ZUZpZWxkUHV0S2luZChPcCk7CiAKICAgICAgICAgLy8gSWRlbnRpZmllciBjaGVj
ayBoZWxwZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlW
YWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCisgICAgICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0UHJpdmF0
ZU5hbWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0
JiBzbG93Q2FzZXMpOworCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCwgUHV0S2luZCwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dD
YXNlcyk7CiAKQEAgLTYwNSw2ICs2MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1dEJ5VmFsPgogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02
ODYsNiArNzA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
bmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBhZTYxZDkxODVmZWM3NWJlZWVl
YTFkYzQzYmI2YTQ3MWYyYmQ3Y2U3Li44YmZhYjgxNWVhMTViMzU5YWQzNDM5ZmYyMjQ1ZmU2ZDdh
OWFkNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTM1LDExICsxMzUsMTAgQEAgdm9pZCBKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkK
IEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
CiAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
LCAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUs
IFB1dEtpbmQgcHV0S2luZCkKICAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFz
ZSwgdmFsdWUpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBtX3B1
dEtpbmQocHV0S2luZCkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOwogfQpAQCAtMTUxLDIyICsxNTAsMjUgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7Ci0g
ICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpOb25lKSB7Ci0gICAgICAgIEFTU0VSVChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKLSAgICAgICAg
QVNTRVJUKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7Ci0gICAgICAgIGlmIChtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQotICAgICAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZTsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RP
cHRpbWl6ZTsKLSAgICB9Ci0KLSAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7Ci0gICAg
ICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQorICAgIHN3aXRjaCAobV9wdXRLaW5kKSB7Cisg
ICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpCisg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOworICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOworICAgIGNhc2UgRGly
ZWN0OgorICAgICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKLSAgICB9Ci0gICAgaWYgKG1fcHV0S2lu
ZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6
ZTsKKyAgICBjYXNlIERpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKG1f
ZWNtYU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVm
aW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBEaXJlY3RQcml2YXRlRmll
bGRTZXQ6CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOworICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERl
bEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDI5YzJkMmU2ZDMyOGRhOWNi
Mzc2MTE1ZDk5MmVhMmEyYzUwYzU5OTQuLjg1MzgzNWEzOTM1ODUyOTEyN2RlMmYzOTdiNDk3OTk4
MjRlMzZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
LSNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMSwxMiArMTMwLDExIEBAIGNsYXNzIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0
KCkpCi0gICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0
S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAg
CiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0x
NDUsNyArMTQzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2Rl
OwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCAyZjc2ZGIwMDY5MjExOGFmODUyZTcwNjI5NTAyNzQyOTk4NWFj
ZmIyLi5kOGU1ZGExMmEzMGNjNjI5OWQxMGIzMTFmM2VkYzgwNWQ0ZmM1NDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk5LDIxICs2OTksOSBAQCBBTFdBWVNf
SU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1dEJ5SWQgb3ApCiB9
CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1
dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQorQUxXQVlTX0lOTElORSBFQ01BTW9k
ZSBKSVQ6OmVjbWFNb2RlPE9wUHV0UHJpdmF0ZU5hbWU+KE9wUHV0UHJpdmF0ZU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci1Qcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChP
cCkKLXsKLSAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKLX0KLQotdGVt
cGxhdGU8PgotQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQot
ewotICAgIHJldHVybiBvcC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsKKyAgICBy
ZXR1cm4gRUNNQU1vZGU6OnN0cmljdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRmNDUyNGRjNzJi
NGQ5MWI3MjllYTk1ZWM4ZDI2MGVjMTg1NjQyZjQuLjQ0ODI5YmE4NjQ2YjBmYWUyZTk0YjhiOWY4
MmNkOTFhZjE3ZjljM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiB9IC8v
IGV4dGVybiAiQyIKIAogdXNpbmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0
aW9uPHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBj
b25zdCBJZGVudGlmaWVyJik+OwotQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRl
RmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNr
ID0gUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2soKSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
c2V0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNr
JiBjYWxsYmFjayA9IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrKCkpCiB7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC03MTIsNyArNzEyLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVj
dC0+c3RydWN0dXJlKHZtKTsKIAogICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmpl
Y3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7Ci0gICAgYmFzZU9iamVjdC0+
cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAg
ICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUs
IHB1dFNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAg
ICBpZiAoY2FsbGJhY2spCkBAIC03NzAsMTEgKzc3MCwxMSBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZQogICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAogICAgICAgICBp
ZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVy
ZSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90
LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CisgICAgICAgICAgICByZXBh
dGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0
dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZERl
ZmluZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdD
YWNoZWFibGVJZGVudGlmaWVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC03
ODMsMTAgKzc4MywxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAKLSAgICBwdXRQcml2YXRlRmllbGQo
dm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHZhbHVl
KTsKKyAgICBzZXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNl
VmFsdWUsIGlkZW50aWZpZXIsIHZhbHVlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdD
YWNoZWFibGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRT
ZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVu
dGlmaWVyKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03OTgsMTMgKzc5OCwxMyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0
KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOwogCi0gICAgcHV0UHJpdmF0ZUZpZWxkKHZt
LCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUs
IFsmXShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgewor
ICAgIHNldFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmpl
Y3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbJl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xh
c3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKIAogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKIAogICAgICAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRp
ZmllcikpCi0gICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1Yklu
Zm8sIERpcmVjdFByaXZhdGVGaWVsZFB1dCk7CisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlm
aWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFNldCk7CiAgICAgfSk7
CiB9CiAKQEAgLTExMTksNiArMTExOSwxMDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2Ny
aXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkp
OworCisgICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXph
dGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgp
ICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2Ny
aXB0KSkgeworICAgICAgICBBU1NFUlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkpOworICAgICAgICBB
U1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7Cisg
ICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CisgICAgICAgIGlmIChieVZh
bEluZm8tPnNlZW4pIHsKKyAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgp
ID09IHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dFByaXZh
dGVOYW1lV2l0aENhY2hlZElkKHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXpl
ZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gU2VlbSBsaWtlIGEg
Z2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRp
b25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBieVZh
bEluZm8tPnNlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQg
PSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkp
OworICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3Vs
dDo6U2Vlbk9uY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1p
emVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNl
KSB7CisgICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAxMCB0aW1lcyB3
aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCisgICAgICAgIC8vIG5ldmVyIG1ha2Ug
dGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2Ygb3Bw
b3J0dW5pdHkKKyAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgcHV0X3ByaXZh
dGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCisgICAgICAgIC8vIFdlIGNvdW50IHVwIHNsb3dQ
YXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KKyAgICAgICAgaWYgKCsrYnlW
YWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQorICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVz
dWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CisgICAgfQorCisgICAgaWYgKG9wdGlt
aXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgeworICAgICAgICAv
LyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KKyAgICAgICAgYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOworICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJu
QWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdl
bmVyaWMpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAKKyAgICAvLyBQcml2
YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29w
ZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAg
ICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgYXV0byBiYXNlT2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJh
c2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZp
ZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKKy8vIFdl
IG5lZWQgdG8gbWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJp
dmF0ZUZpZWxkUHV0S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpT
VmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
KyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CisKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3
aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBh
bHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7
CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwcml2YXRl
RmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIGVs
c2UKKyAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKworICAgIGlmIChieVZhbEluZm8pCisgICAgICAg
IGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IDY1ZTcxMjU5NTY4MzBhODgzZTgzMzMwNzk1MzllMjA0NDJjMDVkOTQu
LjY3MDU1MTBkOWE0NTgxZGRiMTA3NzBkNzQ0MDYwMWY4M2IwYzlhYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKEpJVCkKIAogI2luY2x1ZGUgIkpJVE1hdGhJQ0ZvcndhcmRzLmgiCisjaW5jbHVkZSAiUHJp
dmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJ
bXBsLmg+CkBAIC0xOTEsOSArMTkyLDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdU
Rl9JTlRFUk5BTDsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZh
bEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiMjc0MWVk
MTcxOWE0NzM4OTI4YTBmMmM2MWJlM2UyZGRkNDc0M2EuLmJlZDRmZWVhZjM4YTFjM2ZmODYyNDUy
MzgwM2VlMGRhNjc3MmZkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0
Zi9TY29wZWRMYW1iZGEuaD4KQEAgLTMxNiw3ICszMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0
ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0
IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNv
bmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBj
b2RlIHNpemUuCkBAIC0zNDYsNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAg
ICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAg
IGVjbWFNb2RlID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CisgICAgICAgIGVjbWFNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzY5
LDYgKzM3MCw0NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxJbnN0cnVj
dGlvbkluZGV4Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCByZWdUMSk7CisKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0g
cGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICAKKyAg
ICBMYWJlbCBkb25lID0gbGFiZWwoKTsKKyAgICAKKyAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
LmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVJbmRleCwg
ZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0uYnlWYWxJbmZvOworICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5
dGVjb2RlLm1fcHV0S2luZDsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgTGFi
ZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAg
ICBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSByZWdU
MjsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BS
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3Bl
cnR5R1BSKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZh
bHVlR1BSKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0z
MihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CisgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9
IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
R2V0dGVyQnlJZD4oKTsKQEAgLTcwMCw3ICs3NDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCi0gICAgICAg
IGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRl
Y29kZSkpOworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwpAQCAtMTM1OCw3ICsxNDAwLDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAog
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0g
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVj
b2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRv
bmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMTM3Nyw2ICsxNDE5LDEyIEBAIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1
dEtpbmQgcHV0S2luZCwKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK0pJVFB1dEJ5SWRH
ZW5lcmF0b3IgSklUOjplbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRl
TmFtZSBieXRlY29kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0
JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCit7CisgICAgYXV0byBwdXRLaW5kID0g
Ynl0ZWNvZGUubV9wdXRLaW5kLmlzRGVmaW5lKCkgPyBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUg
OiBEaXJlY3RQcml2YXRlRmllbGRTZXQ7CisgICAgcmV0dXJuIGVtaXRQdXRCeVZhbFdpdGhDYWNo
ZWRJZChieXRlY29kZSwgcHV0S2luZCwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNl
cyk7Cit9CisKIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25l
ciwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChtb2RlID09IFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKTsKQEAgLTE0NjYs
NiArMTUxNCwzOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBs
YXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJ
VEFycmF5TW9kZSk7CiAKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0
aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVt
cExpc3QgZG9uZUNhc2VzOworICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2Rl
LCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxvY2spOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nh
c2VzLCBieVZhbEluZm8tPnNsb3dQYXRoVGFyZ2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRv
bmVDYXNlcywgYnlWYWxJbmZvLT5kb25lVGFyZ2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hl
Y2tzLmVtcHR5KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3Ms
IGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNh
bGxTaXRlIDogbV9jYWxscykgeworICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwor
ICAgIH0KKyAgICBnZW4uZmluYWxpemUocGF0Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAg
IGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAg
ICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAg
ICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICcl
cycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRm
OCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNz
LnZhbHVlKCkpOworICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKwor
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJv
dXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxOb1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFn
PihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
UHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDdjZmRkNmMy
NjUxNTMxM2IyYWYzMDgxZWIwZjVjMWVhNGMzMDU3NDguLmYxNWMwZDAxNjAzMGRmNTRmM2M1ZGJi
NDhlNDAwNzk5YmM5Yjk2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzMxLDYgKzMzMSw1MCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZQogfQogCiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgQnlWYWxJbmZvKiBieVZh
bEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisKKyAg
ICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsK
KworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAg
YWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworCisgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7Cisg
ICAgCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxDb21waWxhdGlvbklu
Zm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZhc3RQYXRoSm1wLCBkb25lLCBkb25lKSk7
Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKKyAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtp
bmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
ICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
KHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzKHJlZ1QzLCByZWdU
Mik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCk7CisKKyAgICBlbWl0
TG9hZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICBlbWl0TG9hZChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgdmFsdWVSZWdzLnRhZ0dQUigpLCB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBieVZh
bEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKKworICAgIG1fYnlWYWxDb21w
aWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xv
d1BhdGg7CisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CisgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRC
eVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTcwOCw3ICs3NTIsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAg
ICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDog
Tm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCmluZGV4IDJlYmIxM2FmZGE0MGUxNjQwYzNiZDkzMTgyYWYyYzU1Y2FkNThmMWEu
LmUwYjkwMThhZmFkYzMwN2IxYzYxNWQ5MmY2YzM2YTI1ZTRhMGY5OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTM1LDM0ICs1MzUsNDggQEAgdm9pZCByZXBhdGNo
QXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlMKIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0
aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAtPiBkZWNs
dHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKIHsKLSAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkgewotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNo
IChwdXRLaW5kKSB7CisgICAgY2FzZSBOb3REaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7Cisg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0OworICAgIGNhc2UgRGlyZWN0
OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0OwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJl
Y3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZFN0cmljdDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
UHJpdmF0ZUZpZWxkUHV0KQotICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQ
cml2YXRlRmllbGRTdHJpY3Q7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0
OwotICAgIH0KLSAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0OwotICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0OworICAgIGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lOgorICAgICAgICBB
U1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0OworICAgIGNhc2UgRGlyZWN0UHJpdmF0ZUZpZWxk
U2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0OworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAt
PiBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKQogewotICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVj
dCkKKyAgICBzd2l0Y2ggKHB1dEtpbmQpIHsKKyAgICBjYXNlIE5vdERpcmVjdDoKKyAgICAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0OgorICAgICAgICBpZiAoc2xvdC5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
T3B0aW1pemU7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0
ZSkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVs
ZFB1dCkKLSAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemU7Ci0gICAgfQotICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKLSAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOworICAgIGNhc2UgRGlyZWN0UHJpdmF0ZUZp
ZWxkRGVmaW5lOgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7
CisgICAgY2FzZSBEaXJlY3RQcml2YXRlRmllbGRTZXQ6CisgICAgICAgIEFTU0VSVChzbG90Lmlz
U3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRl
RmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
UHV0S2luZCBwdXRLaW5kKQpAQCAtNjA5LDYgKzYyMyw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAoaXNQcm94eSAmJiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRTZXQg
fHwgcHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpKQorICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CisKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90
LmlzQ2FjaGVhYmxlUHV0KCkpIHsKQEAgLTY3MCw3ICs2ODcsNiBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAgIGlmIChwdXRLaW5k
ID09IE5vdERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHV0S2luZCAhPSBE
aXJlY3RQcml2YXRlRmllbGRQdXQgJiYgcHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRDcmVh
dGUpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWlu
Rm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBudWxscHRyKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOwpAQCAtNjg4LDcgKzcwNCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5
TWlzcyh2bSwgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1w
bCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQpA
QCAtMTUyMSw4ICsxNTM3LDggQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rp
b24gPSBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5v
cHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0IHx8IHVub3B0
aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKQog
ICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RP
cHRpbWl6ZTsKLSAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1
dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCi0gICAgICAgIG9wdGlt
aXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplOworICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJ
ZFNldFByaXZhdGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlv
blB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKKyAgICAgICAgb3B0aW1pemVk
RnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7
CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGVm
aW5lUHJpdmF0ZUZpZWxkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9u
UHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6
ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggZjYxMGMxOTc3NDY5ZGNkOGM4ZTMwNDYz
MWNhYzc0NmJkNDI4NDEzZi4uYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2NzQ4NzEx
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDkgKzU5LDkgQEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5o
IgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAi
TmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUg
IlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2lu
Y2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNs
dWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCmluZGV4IGQ0ZDA5MTZmZjJkNzYxNDQwNDNhMzk1ZDNlOGE4MTgzMDcyMDE0
NmEuLjM2ZmFmNTM3ZGZmNDUyOWE1YmNmZmQzMDk2ZWI5YTE4NTBkZjNhNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTE3NywxNiAr
MTE3NywxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJl
Y3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5t
X3ZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wgaXNT
dHJpY3RNb2RlID0gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCk7Ci0gICAg
Ym9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmll
bGRBY2Nlc3MoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUu
aXNTdHJpY3QoKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzVWludDMySW5kZXgoKSkgewotICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxk
QWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VORCgp
OwogICAgIH0KIAogICAgIGlmIChzdWJzY3JpcHQuaXNEb3VibGUoKSkgewotICAgICAgICBBU1NF
UlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICAgICAgZG91YmxlIHN1YnNjcmlwdEFzRG91
YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CiAgICAgICAgIHVpbnQzMl90IHN1YnNjcmlwdEFz
VUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1YnNjcmlwdEFzRG91YmxlKTsKICAgICAg
ICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgo
c3Vic2NyaXB0QXNVSW50MzIpKSB7CkBAIC0xMjAwLDI1ICsxMTk3LDExNiBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVOTElLRUxZ
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFT
U0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwog
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkK
ICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52
YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJv
dyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBp
ZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUu
bV9mbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3Qt
PmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0
ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAg
IExMSU5UX0VORCgpOyAgICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6
cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwor
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2Up
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV92YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJl
IGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1l
dGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RN
b2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAg
aWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5k
ZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlzU2V0KCkpOwor
ICAgICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKwor
ICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAgICAgJiYgc3Vi
c2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlm
IChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3Bl
cnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOworCisgICAgICAg
ICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIpKSB7
CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNo
cG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBw
cm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJhcmVEYXRhKCkt
PnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURl
dGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgb3V0IGJ5
IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVj
dHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICBtZXRh
ZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5j
bGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAg
ICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkp
IHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2
aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5ld1N0
cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
b2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFzYXdQ
b2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0
dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3Ry
dWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJv
cGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3Nl
cnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRvIGRpc2FibGUg
Y2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0aGVuIHN0b3Jl
IHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZworICAgICAgICAg
ICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3ZSByZWlmeSBh
IGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRvIGRpc2FibGUg
Y2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRvZXMg
bm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMgb2Yg
c3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAgICAgICAgICAg
Ly8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG5l
d1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ss
IHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZjMzA4ZDlmM2Rk
ZTI1YjlmZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFlMThjYmZlODMz
ZjNhOWMxY2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZWJkMzZiYWNl
ZGQ0ZTAzODE0MDE2MjlmOTZhMTE2NWExZTdlOTM2Ni4uYTYwMmFiZjAzMjgyYjEyMGQzYzYxY2Vm
Nzk5NjFhMmEwOTAwMWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYxNCw2ICs2MTQsMTMgQEAg
bWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRBZnRlclNsb3dQ
YXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0
aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisg
ICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisgICAgd3JpdGVC
YXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKy53cml0ZUJh
cnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQs
IGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmll
ckRvbmUpCkBAIC0xNjkzLDYgKzE3MDAsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
cHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAg
ICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVf
bmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFz
ZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykK
KyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0
YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29s
ZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1l
OjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQ
cml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQw
IC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMg
dDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9u
CisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJh
cnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAg
ICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkK
KyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQor
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywg
dDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRp
b246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9s
ZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRh
ZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93
OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisg
ICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29k
ZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBlMjc2MDkyOGEwZmM5NDEzOTgwOWZkM2U4Y2M4ZmUy
MWJhOTc5NzlhLi4wYTM1OWRlZTMyZGMwMzYwM2Q2Y2Q5NDZkYjExNTgwZDQyZjI5OTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAg
ICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRl
X25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdldCht
X3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0Mywg
dDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9h
ZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0Mgor
ICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRlTmFt
ZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5
W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAg
IyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAgICAj
IHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisgICAg
bG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0
MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxv
YWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFkYXRh
IGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBiYXNl
IGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlvbjoK
KyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xkcyB0
aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
b2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFs
dWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRjaCgp
CitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JF
eGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYWUzM2ZmZjQwMzQ5NDZjNjczZThm
OWI1ZDk4ZjM3YTZhNDFjYWNjYi4uNTk5N2MwNzZjNzAxZjdiNmFiNmUyNjVmYTU4NmIwODc2MzM2
YTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xODIs
NyArMTgyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkU2xv
dChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBpbmxpbmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGlubGluZSB2b2lkIHB1dFByaXZhdGVGaWVs
ZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgaW5saW5lIHZvaWQgc2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBpbmxpbmUgdm9pZCBk
ZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApp
bmRleCA5NTQ1YzFlMTk1MWE4Y2U4ZDczYWEwMDExOWI1YzgyNGYzYmQ4ZTFmLi42YzUzOWZjZTMz
NGRjNmE0ZWJkZGMyOThjNGIwYjEwZGY1NzMxMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNjE3LDcgKzYxNyw3IEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnVlKTsK
IH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJp
dmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmExMjM3N2E5YjEzZTkxYmZm
M2NhMDcyZDJkMzc5MDZmOWU2Y2I2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQg
UHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IGlmIChpc1NldCgpKQorICAgICAgICBvdXQucHJpbnQoIlNldCIpOworICAgIGVsc2UKKyAgICAg
ICAgb3V0LnByaW50KCJEZWZpbmUiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1
dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJp
dmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAw
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJp
dmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQ
cml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVG
aWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUp
OyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVt
cChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFBy
aXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNl
dCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBt
X3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkMDc2ZjJjYzYxYTBmOGNhNjY0ODYw
MzdlYTY1MDJmZTNlYjU4M2IuLmYwOTE1MWQxYmRkYzI1MzdjM2Q3NGY5MjA3YTZlZTZmNDY1NWQ3
MTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDktMjEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBo
YW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRf
cHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVjdXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKwor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhp
Yy1wdXQtcHJpdmF0ZS1maWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qczogQWRk
ZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWlu
c2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1l
LWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlk
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQt
ZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1
dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25z
dGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmll
ci5qczogQWRkZWQuCisKIDIwMjAtMDktMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBUZXN0MjYyIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUt
ZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9w
b2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzZjOGM0OWJkZWQy
ZTJiY2IzNzY3N2Y0NjU0MTU1MWI4NmQ1NTYyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZh
dGUtZmllbGQuanMKQEAgLTAsMCArMSwyNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitjbGFzcyBDIHsKKyAgICAjZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAg
ICB0aGlzLiNmaWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKworbGV0IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5l
dyBDKCk7CitjMi5iYXIgPSAwOworCitsZXQgYzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsKKwor
bGV0IGFyciA9IFtjMSwgYzIsIGMzXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBp
KyspIHsKKyAgICBhcnJbaSAlIGFyci5sZW5ndGhdLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJp
dmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2
YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjI4ZDM4OGJiMDUwYjYyZTY1
OThiZjdjODNhZmE0ODg2MDg1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCww
ICsxLDE2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRy
dWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAgICNm
aWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFs
dWU7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYyA9
IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGMuc2V0
RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHlt
b3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5
bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMzJmY2ZjNTU0ZTQ4ZWY0
NzUzNzcxYzM5NWZiMmVlOGVhNjVlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjQg
QEAKK2NsYXNzIEMgeworICAgIGZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAg
ICAgdGhpcy5maWVsZCA9IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKworbGV0IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5l
dyBDKCk7CitjMi5iYXIgPSAwOworCitsZXQgYzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsKKwor
bGV0IGFyciA9IFtjMSwgYzIsIGMzXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBp
KyspIHsKKyAgICBhcnJbaSAlIGFyci5sZW5ndGhdLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvcHV0LXB1YmxpYy1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmZjY2Uy
ZWY2NDE2NDgzZTYyMjczYzhmNTA0NWViNDQxNjg1ZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXB1YmxpYy1maWVsZC5qcwpAQCAtMCwwICsxLDEzIEBA
CitjbGFzcyBDIHsKKyAgICBmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAg
IHRoaXMuZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRG
aWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsg
aSsrKSB7CisgICAgYy5zZXRGaWVsZChpKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWY1ZTYzMDU1NzhkZWY2OGI0ZTI2ZmZmOGU3MWNmOWUwYjk0OGZjYgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNr
LWJhcnJpZXItaW5zZXJ0aW9uLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24oYSwgZSkgeworICAgICAgICBp
ZiAoYSAhPT0gZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2Vw
dGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0
aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdp
dGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgewor
ICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFy
ciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsK
KyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAg
ICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAg
ICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxk
ID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Zp
ZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25v
RlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IG9sZE9iamVjdCA9IG5ldyBDOworZm9y
ICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgaWYgKGkgPCA1MDAwKSB7CisgICAgICAgIGxldCBj
ID0gbmV3IEM7CisgICAgICAgIGMuc2V0RmllbGQoaSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGkgPT0gNTAwMCkKKyAgICAgICAgICAgIGdjKCk7CisgICAgICAgIG9sZE9iamVjdC5zZXRG
aWVsZCh7cHJvcDogaX0pOworICAgICAgICBlZGVuR0MoKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVW
YWx1ZShvbGRPYmplY3QuZ2V0RmllbGQoKS5wcm9wLCBpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1i
eS1pZC1kaXJlY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYw
Y2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCkBA
IC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGll
cnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBo
aWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93
czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2Vw
dGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAg
IHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2Yg
ZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsg
IiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0g
MDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkg
eworICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBr
ZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5
ID09PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtl
eSA9PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0
aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAg
ICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsK
KyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7
CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRl
LW5hbWUtYnktaWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21w
aWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4
MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1l
LWJ5LWlkLmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vu
c3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0t
bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxl
dCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsK
KyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFl
IGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czog
IiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9
CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisK
KyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisg
ICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAg
ICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAg
ICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7Cisg
ICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZp
ZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KK30KK25vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0
IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsK
KyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5v
dC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wOGQ2ZTQ1MzY0YjAyYjQzNTU0ZWQzNjJkNGFhOGRlMTBiYzQ3ZmE4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90
LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAg
bGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rvcigp
OworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAo
IWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dz
OiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0K
K30KKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHJldHVybiB7fTsKKyAg
fQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIGdl
dEZpZWxkKGNoYW5nZVJlY2lldmVyKSB7CisgICAgICAgIGxldCByID0gdGhpczsKKyAgICAgICAg
aWYgKGNoYW5nZVJlY2lldmVyKSB7CisgICAgICAgICAgICByID0ge307CisgICAgICAgIH0KKwor
ICAgICAgICByLiNmaWVsZCA9ICdiYXInOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgaWYgKGkgPCA5MDAwKQorICAgICAgICBDLnByb3RvdHlwZS5nZXRGaWVs
ZC5jYWxsKGMsIGZhbHNlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIEMucHJvdG90eXBlLmdldEZpZWxkLmNh
bGwoYywgdHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTE2OTVhMWFkZTM3NjljNjE0ZGRjOTMwMTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJl
LW1pc3MuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBp
ZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgewor
ICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkg
Pj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4g
J3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQg
PSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0
ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRv
LW11bHQtcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDJmYWE4OTFhZTQxNDAxZWVhY2Zk
YWVkODM1ZjRlNDJkZjRlNWU0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcwpA
QCAtMCwwICsxLDU3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRp
ZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZVBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQor
fQorCitsZXQgaXRlcmF0aW9ucyA9IDEwMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBm
YWxzZTsKK2xldCBjb25zdHJ1Y3REaWZmZXJlbnQgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNm
aWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGNvbnN0cnVj
dERpZmZlcmVudCkKKyAgICAgICAgICAgIHRoaXMuZm9vID0gMDsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgbWV0aG9kKGosIG90aGVyKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAg
ICAgICAgbGV0IG9iaiA9IHRoaXM7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29t
cGlsYXRpb24gJiYgaSA8IGl0ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAg
ICAgaWYgKGogJSAyKSB7CisgICAgICAgICAgICBvdGhlci5mb28gPSBqOworICAgICAgICAgICAg
b2JqID0gb3RoZXI7CisgICAgICAgIH0KKyAgICAgICAgb2JqLiNmaWVsZCA9IGM7CisgICAgfQor
CisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9
Citub0lubGluZShDLnByb3RvdHlwZS5tZXRob2QpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworCitsZXQgb3RoZXJDID0gbmV3IEMoKTsKKworY29uc3RydWN0RGlmZmVyZW50
ID0gdHJ1ZTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDsgaSsrKSB7CisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGMubWV0aG9kKGksIG90aGVyQyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldEZpZWxkKCksIDApOworfQorCit0cmlnZ2VyQ29tcGlsYXRpb24gPSB0cnVlCitsZXQgYyA9
IG5ldyBDKCk7CitjLm1ldGhvZCgwLCBvdGhlckMpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc3MjBlYzgwNGE5NGY3MWUzNThlYTdhYWU2YTZmZThkZWUyNTg1NTIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0
YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDsKK2xldCB0
cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IDA7CisK
KyAgICBtZXRob2QoKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwgaXRlcmF0aW9uczsgaSsrKQorICAgICAgICAg
ICAgYysrOworICAgICAgICB0aGlzLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwOyBpKyspIHsKKyAgICBjLm1ldGhvZCgpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dlckNvbXBpbGF0aW9uID0gdHJ1ZQorYy5tZXRo
b2QoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNmMy
OTljNjYyNzBiYWJjYTNkMDA3YjdhNzgzMDk3NzI3OTRkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKQEAgLTAsMCArMSw0MiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAg
IGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAg
aW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNbZHluYW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9w
ZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRo
aXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9Jbmxp
bmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZp
ZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90
b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xh
cmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENs
YXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJvcGVydHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcg
Q2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NTk4ZTcwMTlkMzc0ZDYw
YWE5ZDdjZGE5Y2Y1NDJiNzE2N2YzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisg
ICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBs
ZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6
ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQor
fQorCitsZXQgc2hvdWxkT3ZlcnJpZGVSZXR1cm4gPSBmYWxzZTsKK2xldCBvYmo7CisKK2NsYXNz
IEIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBpZiAoc2hvdWxkT3ZlcnJpZGVSZXR1
cm4pCisgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9
Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgI2ZpZWxkID0gJ3Rlc3QnOworCisgIGdldEZp
ZWxkKCkgeworICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICB9Cit9Citub0lubGluZShDLmNv
bnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgICAgc2hv
dWxkT3ZlcnJpZGVSZXR1cm4gPSB0cnVlOworICAgICAgb2JqID0ge307CisgICAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMucHJvdG90eXBlLmdldEZpZWxkLmNh
bGwob2JqKSwgJ3Rlc3QnKTsKKyAgICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgp
ID0+IHsKKyAgICAgICAgICBuZXcgQygpOworICAgICAgfSk7CisgIH0gZWxzZSB7CisgICAgICBs
ZXQgb2JqID0ge307CisgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZh
bHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAgICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICAgICAgICBjLmdldEZpZWxkLmNhbGwob2JqKTsKKyAgICAgIH0p
OworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWlu
dmFsaWQtc3RvcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQt
c3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0N2NlYTYwMDA1YTliNWY4NjhhMGI1M2JmMjFkNzVjMjRm
YmIwOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
aW52YWxpZC1zdG9yZS5qcwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgewor
ICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZFN0b3Jl
ID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0g
dGhpcy5pbml0KCk7CisgICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxk
U3RvcmUpCisgICAgICAgIHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBu
ZXcgQygpOworfQorbm9JbmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBh
c3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9
KTsKKyAgfSBlbHNlIHsKKyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQt
c3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNv
bXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlm
MWI4MGIwMmZjMGE3MTk1NDdlN2EyMWRiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMKQEAgLTAsMCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5z
dXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBp
ZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlv
biwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZh
bHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9u
Lm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhv
dXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0
RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAg
CisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwor
ICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAg
ICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVy
biBDOworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIg
PSBmYWN0b3J5Q2xhc3MoKTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVl
KGMyLmdldEZpZWxkKCksICd0ZXN0Jyk7CitjMi5zZXRGaWVsZCgnZm9vJyk7Cithc3NlcnQuc2Ft
ZVZhbHVlKGMyLmdldEZpZWxkKCksICdmb28nKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rl
c3QnKTsKK30pOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLnNl
dEZpZWxkLmNhbGwoYywgJ3Rlc3QnKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAxNDZl
MTU2ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVl
OiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9
CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisK
KyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3Ro
ZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0Rmll
bGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RG
RyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisK
K2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAg
Yy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgp
LCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2EzMjk3YmVkODJk
N2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsx
LDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUi
LCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
c2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsK
KyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIHNldEZp
ZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxk
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5w
cm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9E
RkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRG
aWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9v
JyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdl
ZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcyOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpA
QCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRp
ZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBl
KSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgewor
ICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5w
cm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAg
ICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5s
aW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigpOworbGV0
IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMuc2V0Rmll
bGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0
JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409429</attachid>
            <date>2020-09-22 17:23:57 -0700</date>
            <delta_ts>2020-09-22 19:24:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200922212349.patch</filename>
            <type>text/plain</type>
            <size>174004</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2FmMDRhZDM3ZWNlYWI4ZTNlNzY3MmEyOTJmZjdiMGE3M2I0NTJlLi41MTIxZGRmMTk1MGRhY2Rl
ZTgxZjVkODcyOWI0Y2E4YjYyMDgxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODIgQEAKKzIwMjAtMDktMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2Ug
U3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgbmV3IG9wY29kZSB0byBo
YW5kbGUgcHJpdmF0ZSBmaWVsZCBzdG9yYWdlLgorICAgICAgICBCZWZvcmUgdGhpcyBjaGFuZ2Us
IHdlIHdlcmUgdXNpbmcgYHB1dF9ieV92YWxfZGlyZWN0YCBhbmQgaW5jbHVkaW5nCisgICAgICAg
IHRoZSBpbmZvcm1hdGlvbiBvZiBgUHV0S2luZGAgaW50byBgUHV0QnlWYWxGbGFnc2AuIFdlIGlu
aXRpYWxseSBkZWNpZGVkCisgICAgICAgIHRvIHVzZSBgcHV0X2J5X3ZhbF9kaXJlY3RgIHRvIHRh
a2UgYWR2YW50YWdlIG9mIGFsbCBJQyBtZWNoYW5pc20gYWxyZWFkeQorICAgICAgICBpbXBsZW1l
bnRlZCBmb3IgdGhpcyBpbnN0cnVjdGlvbiwgaG93ZXZlciB0aGUgc2VtYW50aWNzIG9mIHByaXZh
dGUgZmllbGQKKyAgICAgICAgaXMgZGlmZmVyZW50IGVub3VnaCB0byBjb21wbGljYXRlIHRoZSB1
bmRlcnN0YW5kaW5nIG9mCisgICAgICAgIGBwdXRfYnlfdmFsX2RpcmVjdGAuCisKKyAgICAgICAg
VGhlIG5ldyBpbnN0cnVjdGlvbiBpcyBjYWxsZWQgYHB1dF9wcml2YXRlX25hbWVgIGFuZCBoYXMg
YXMgaXRzIG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgc3VwcG9ydCBvZiBJQyBmb3IgYWxs
IHRpZXJzLiBGb3IgREZHIGFuZCBGVEwsIHdlCisgICAgICAgIGFyZSBvbmx5IGVtbWl0aW5nIElD
IHdoZW4gd2UgYXJlIGFibGUgdG8gZW1pdCBgQ2hlY2tDb25zdGFudGAKKyAgICAgICAgZm9yIHN1
YnNjcmlwdCBpZGVudGlmaWVyIGR1cmluZyBCeXRlY29kZSBwYXJzaW5nLiBXZSBhcmUgYWRkaW5n
IGEgbmV3CisgICAgICAgIERGRyBub2RlIGNhbGxlZCBgUHV0UHJpdmF0ZU5hbWVCeUlkYCB0aGF0
IGhhbmRsZXMgc3VjaCBjYXNlcyB3aGVuIHdlCisgICAgICAgIGhhdmUgY29uc3RhbnQgaWRlbnRp
ZmllcnMuCisgICAgICAgIFdlIGFyZSBhbHNvIGFkZGluZyBhIG5ldyBERkcgbm9kZSBgUHV0UHJp
dmF0ZU5hbWVgIHRoYXQgaGFuZGxlcyBnZW5lcmljCisgICAgICAgIGNhc2Ugb2YgYHB1dF9wcml2
YXRlX25hbWVgLiBUaGUgc3RyYXRlZ3kgdXNlZCB0byBjb21waWxlCisgICAgICAgIGBwdXRfcHJp
dmF0ZV9uYW1lYCBpcyB2ZXJ5IHNpbWlsYXIgd2l0aCB3aGF0IHdlIGFyZSB1c2luZyB3aXRoCisg
ICAgICAgIGBwdXRfYnlfdmFsW19kaXJlY3RdYC4gV2UgZmlyc3QgdHJ5IHRvIGNvbXBpbGUgaXQg
YXMgYFtNdWx0aV1QdXRCeU9mZnNldGAKKyAgICAgICAgdXNpbmcgcHJvZmlsZWQgaW5mb3JtYXRp
b24gZnJvbSBMTEludCBhbmQgQmFzZWxpbmUgZXhlY3V0aW9uLiBJZiBpdAorICAgICAgICBpcyBu
b3QgcG9zc2libGUsIHdlIHRoZW4gZW1pdCBgUHV0UHJpdmF0ZU5hbWVbQnlJZF1gIG5vZGUuIFdl
IGdldCBhbm90aGVyCisgICAgICAgIGNoYW5jZSB0byB0cmFuc2Zvcm0gYFB1dFByaXZhdGVOYW1l
QnlJZGAgaW50byBgUHV0QnlPZmZzZXRgIGlmIHdlIGNhbiBwcm92ZQorICAgICAgICBpdHMgc3Ry
dWN0dXJlIHNldCBhdCBjb25zdGFudCBmb2xkaW5nIHBoYXNlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5
dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChK
U0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojp0cnlGb2xkQXNQdXRCeU9mZnNldCk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6
OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAg
KiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkJ5VmFsQ29tcGlsYXRpb25JbmZvOjpCeVZhbENv
bXBpbGF0aW9uSW5mbyk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24p
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlPE9wUHV0UHJpdmF0
ZU5hbWU+KToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5
VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpzZXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRl
RmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQ
dXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRQdXRCeUlEKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5o
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRQcml2YXRlRmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5k
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVGaWVsZFB1dEtpbmQ6OnNldCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtp
bmQ6OmRlZmluZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzTm9uZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzU2V0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNEZWZpbmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OlByaXZhdGVGaWVsZFB1dEtpbmQpOgorCiAyMDIwLTA5
LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
RHJvcCBPcHRpb25zOjp1c2VCaWdJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA5MzE1OWFmYjg1ODRkODk0MGVkNWQ1YjNmMjdhMzQ0M2U4ZjA4ZDMyLi44MDBkZWY0YWE5
ZWMyNjk3YTUwNDFiODBkZjA4ZTcxMDg2MjM1MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDcsNyArNTQ3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUv
UHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAg
IGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAg
LTk3MSw2ICs5NzAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25zTGlzdC5oCiAg
ICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgK
ICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM4NDIwNmU3Y2FmZTNkZjhiZjhhMjk3MzFkOTAzNTNjNDRkYTA5YjguLmYz
YmZhZTE5YjE4MmNiNTI3NGJlNjEyMTkyZDg1MzYwNmIzYzBlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBG
QUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8q
IEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0
RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
NjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZG
RkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFE
RDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0
ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERF
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDE1NCw4
ICs0MTU0LDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFy
ci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQ
YXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc1LDYgKzQxNzMsOCBA
QAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQ
cm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZmls
ZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjZBMTREMzVE
NTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzYzMCw2ICs3NjMwLDggQEAKIAkJCQkzN0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJ
bnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVD
cmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggKi8sCisJCQkJODZCODY5MDIy
NEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwICovLAorCQkJCTg2Qjg2
OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8sCiAJCQkJODY4
OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYx
REMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFE
MzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKQEAgLTg1MDEsOCAr
ODUwMyw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMu
aCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3Bw
ICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICov
LAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywK
LQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJ
CTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQy
MEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FB
MjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC0xMDIzOSw2ICsx
MDIzOSw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQjgxREVGM0FB
RTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJv
YmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3OSw3ICsxMDI4MCw2IEBACiAJCQkJMEYx
NUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1
MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0
Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAppbmRleCA2ZjhlMjcxOTcyMTM1NTUxMjM4YTdiODQ3MTFhMTU2NzUwOWMzMzQw
Li5jNWUyYTY2YmM3MjFlMTA1MDNmMTU1ZWY2NjE1NmQwYTkwZGQzYTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNl
V2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTQ0LDYgKzk0
Myw3IEBAIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNw
cAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKIHJ1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0Mzc2YjIwYjYz
MjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNlOWMyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00
NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywKICAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQdXRLaW5kLAog
ICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCiAgICAg
OlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5cGUsCiAg
ICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0LDIwIEBAIG9w
IDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2Vs
bF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAg
IGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0S2luZDogUHJp
dmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0
cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltK
U0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdTdHJ1Y3R1cmVJ
RDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBAQCBvcCA6cHV0
X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
cHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFNb2RlOiBFQ01B
TW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5NzZiMjJjZWI4
Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMjcs
NiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxS
ZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRv
ckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBi
YXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5
KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQogICAg
IFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFz
SW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNlIG9w
X3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9w
X3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAg
Y2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggODRmMzI3MGMyOTgyOGQ0NmFmZDIxNmZlMzIzYTAzNmFhYTQ4NzA2Yy4uZmYyYWRl
Y2ZmMjVjZjUxNTkyOTRjNWFhMmRkMDFmNDhiNjc5NWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAgICAgTElOSyhP
cFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAgICAgIExJTkso
T3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJ
TksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90
VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3Ry
dWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChu
ZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1
cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5Lmdl
dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAg
aWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPQorICAgICAg
ICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJl
SUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0KKyAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlE
KTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQor
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVy
ZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMwMiw2ICsxMzIy
LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgfSk7CiAK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICBKU0NlbGwq
IHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgIGlmICgo
IW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYgKCFwcm9wZXJ0
eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAmJiAoIW5l
d1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJ
bnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJmNmI4YTBhYWUz
Li5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1OCw0
NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywg
c2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+
Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5k
IGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0cmljdAotICAg
IC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAotICAg
IC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5v
bmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNE
aXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAy
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sg
PSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRT
aGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdldFR5cGUgY29u
dmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAgICBhdXRvIGlz
U3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgp
KTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAgcmV0dXJuIChw
cml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8
IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBhdXRvIGlzRGly
ZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0gICAgICAgIGF1
dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKLSAg
ICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigo
Z3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nl
c3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3Mg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBpc0RpcmVjdCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpj
cmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1v
ZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsK
LSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1
Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0IEBAIHN0cnVj
dCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKICAg
ICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQcml2YXRl
RmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1
c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNr
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNl
OjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBC
YXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6
OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQ
dXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUyYTU3N2M0ZDJl
YzUxZjhhLi44YmMxN2M4NjQ2YmM3MGJkYmU0ZmJlZjlhNjk3YzhjOWZiNTg2YjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC00
OCw2ICs0OCwxMiBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZQogICAgIFZNJiB2bSA9IHByb2Zp
bGVkQmxvY2stPnZtKCk7CiAgICAgCiAgICAgYXV0byBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpOworCisgICAgLy8g
V2UgYXJlIG5vdCB5ZXQgdXNpbmcgYGNvbXB1dGVGcm9tTExJbnRgIGluIGFueSBwbGFjZSBmb3Ig
YHB1dF9wcml2YXRlX25hbWVgLgorICAgIC8vIFdlIGNhbiBhZGQgc3VwcG9ydCBmb3IgaXQgaWYg
dGhpcyBpcyByZXF1aXJlZCBpbiBmdXR1cmUgY2hhbmdlcywgc2luY2Ugd2UgaGF2ZQorICAgIC8v
IElDIGltcGxlbWVudGVkIGZvciB0aGlzIG9wZXJhdGlvbiBvbiBMTEludC4KKyAgICBBU1NFUlQo
IWluc3RydWN0aW9uLT5pczxPcFB1dFByaXZhdGVOYW1lPigpKTsKKwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CiAKQEAgLTI3MSw3ICsyNzcsNyBAQCBQ
dXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGlu
ZUJsb2NrLCBJQ1N0YXR1c01hcCYgYgogICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2VsaW5lQmxv
Y2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0
ZURhdGEpOwogfQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QsIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKIHsKICAgICBpZiAocGFyc2VJ
bmRleCgqdWlkKSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CkBAIC0yOTQsNiArMzAwLDEyIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1CiAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpIHsKKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGhhdmUgYSB2YWxp
ZCBvZmZzZXQgZm9yIHN0cnVjdHVyZXMgb24gYFB1dFByaXZhdGVOYW1lQnlJZGAgZGVmaW5lIG1v
ZGUKKyAgICAgICAgICAgIC8vIHNpbmNlIGl0IG1lYW5zIHdlIGFyZSByZWRlZmluaW5nIGEgcHJp
dmF0ZSBmaWVsZC4gSW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvIHRha2UgCisgICAgICAgICAgICAv
LyBzbG93IHBhdGggdG8gdGhyb3cgZXhjZXB0aW9uLgorICAgICAgICAgICAgaWYgKHByaXZhdGVG
aWVsZFB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMpOwogCkBAIC0zMTYsNyArMzI4LDE0IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTdHJ1CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
IAorCisgICAgICAgIC8vIFdlIGNhbiBoYXZlIGEgY2FzZSB3aXRoIFB1dFByaXZhdGVOYW1lQnlJ
ZCBpbiBzZXQgbW9kZSBhbmQgaXQKKyAgICAgICAgLy8gc2hvdWxkIG5ldmVyIGNhdXNlIGEgc3Ry
dWN0dXJlIHRyYW5zaXRpb24gYmVjYXVzZSBpdCBtZWFucyB3ZSBhcmUKKyAgICAgICAgLy8gdHJ5
aW5nIHRvIHN0b3JlIGluIGEgbm90IGluc3RhbGxlZCBwcml2YXRlIGZpZWxkLiBXZSBuZWVkIHRv
IHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93IGV4Y3BldGlvbiBpZiBpdCBldmVy
IGdldHMgZXhlY3V0ZWQuCisgICAgICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzU2V0KCkp
CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKwogICAg
ICAgICAvLyBPdXIgaHlwb3RoZXNpcyBpcyB0aGF0IHdlJ3JlIGRvaW5nIGEgdHJhbnNpdGlvbi4g
QmVmb3JlIHdlIHByb3ZlIHRoYXQgdGhpcyBpcyByZWFsbHkKICAgICAgICAgLy8gdHJ1ZSwgd2Ug
d2FudCB0byBkbyBzb21lIHNhbml0eSBjaGVja3MuCiAgICAgCkBAIC0zMzEsNiArMzUwLDcgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cnUKICAgICAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICBpZiAoIWlzRGlyZWN0KSB7CisgICAgICAg
ICAgICBBU1NFUlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSk7CiAgICAgICAgICAgICBj
b25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25j
dXJyZW50bHkoCiAgICAgICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
aWQpOwogICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKaW5kZXggNGRkZmZiYjg4
YzgwMzcxZjg2ODNlNTczZjJiZmVjZDczOTE3ZmRhOS4uZjg3MmQ0Y2UyZjYxY2NjZjM5Y2M4ZmM0
M2Q4MzM3MDljOTNlYjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0
dXMuaCIKICNpbmNsdWRlICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50
LmgiCiAjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCiAKQEAgLTk0LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgRXhpdEZsYWcsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEpOwotICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKKyAgICBzdGF0
aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0
dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZp
ZWxkUHV0S2luZCk7CiAgICAgCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0
dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlOTBmZDA3ZDBkMzcx
MzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
LQotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQotewotICAgIENvbW1hUHJpbnRlciBjb21t
YSgifCIpOwotICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQotICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJEaXJlY3QiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRQdXQoKSkKLSAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1dCIpOwotICAgIGlmIChmbGFncy5p
c1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmll
bGQrQWRkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDk4YWRmMmQxYjM2YzYxY2UzMDJiZjljMjM4MjU2YTcwNTY4NzY2N2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFQ01B
TW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA6IHVpbnQ4X3QgewotICAgIE5v
bmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNsYXNzIFB1dEJ5VmFsRmxhZ3Mgewot
cHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGUoRUNNQU1v
ZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhmYWxzZSwg
ZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFucyB0aGF0
IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQotICAgIC8vIHBy
b3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKEVDTUFNb2Rl
IGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHBy
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21h
TW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGJvb2wgaXNEaXJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOyB9
Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQ7IH0KLSAgICBib29s
IGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZTsgfQotCi1wcml2YXRlOgotCi0g
ICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKLSAgICAgICAgLCBtX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKLSAgICAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlW
YWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2VzcywgRUNNQU1vZGUgZWNtYU1vZGUp
Ci0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50U3Ry
ZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxh
Z3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCmluZGV4IGY5MGQ1MjlkMmFlYmIzY2Q5NWM4YjQ1N2I2NDhiNWY3NGI4ZmIxM2Eu
LmQ2ZTM1YmM0ZTg4ZjAwNzVhMzMzNjliZmYxYzI3YTdjNjBmNjM2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZENyZWF0ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0IH07CitlbnVtIGNsYXNzIFB1dEtp
bmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lLCBEaXJlY3RQ
cml2YXRlRmllbGRTZXQgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDMzMjhmNmE0NmQ3N2RiNGRjZmEzYzg0ZDQyYmE2NzdiNWMzMDE3MjcuLmRkOWU3Zjc5ZjRl
ZmMxMjllODlhNzcyNzQwZTRhODg4NmU3MmE1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUg
IlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZEV2YWxDb2RlQmxv
Y2suaCIKQEAgLTI3MjYsNyArMjcyNyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAg
IE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRC
eVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0QnlWYWxEaXJl
Y3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3NTAsMTMgKzI3NTEsMTMgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVu
c2lnbmVkIGkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2
YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJv
cGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNt
YU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUoKSk7CiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVs
ZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSgp
KSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAppbmRleCBkOTAyZjIwNzJiNjE2MzZkYWFmY2NkZDZjNDM0ZTQxYTNi
MTUzZmVkLi42Yjg3N2VlM2I4YmU1ZWVkOWY1NjNkY2E1MDFhZWViZjNlMmM4YjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCkBAIC00MDI5LDE3ICs0MDI5LDI1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKworICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNl
IFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNEaXJlY3Qg
PSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgfHwgbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRl
TmFtZUJ5SWQ7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVGaWVsZFB1dEtpbmQgPSBub2RlLT5v
cCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCA/IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKSA6
IFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMg
c3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAg
ICAgIHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCksCiAgICAgICAgICAgICAgICAg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAgIG5vZGUt
Pm9wKCkgPT0gUHV0QnlJZERpcmVjdCk7CisgICAgICAgICAgICAgICAgaXNEaXJlY3QsIHByaXZh
dGVGaWVsZFB1dEtpbmQpOwogCiAgICAgICAgICAgICBib29sIGFsbEdvb2QgPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDdmYmE1M2I1ZTc5N2ExNmFmMWI3
NGEzMjYyMWFkOTkwOTMxNDJmOTEuLmVlMzM3ZWIyZmE5M2EwZTBmZjM5ODY5ZTZiZTU5NmM0YjNh
MzFlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC03MCw5ICs3MCw5IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
LmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRG
bGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZs
YWdzLmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgpAQCAtMjUyLDYgKzI1Miw5
IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVz
JiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIEVD
TUFNb2RlKTsKIAorICAgIHZvaWQgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKAorICAgICAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsIFByaXZhdGVGaWVsZFB1dEtpbmQp
OworCiAgICAgdm9pZCBoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7CiAgICAgCkBAIC0xMjY3
LDE4ICsxMjcwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7
IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFNb2RlIGVj
bWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFN
b2RlOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9w
UHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAgcmV0dXJu
IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0KLQogQmFzaWNCbG9jayogQnl0ZUNvZGVQ
YXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCkKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC01MDE1LDYgKzUwMDYsMTMwIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfSB9CiB9CiAKK3ZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFByaXZhdGVOYW1lQnlJZCgKKyAgICBOb2RlKiBiYXNl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIE5vZGUqIHZhbHVlLAorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMs
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKK3sKKyAgICBpZiAoIXB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIGlmICghcHV0QnlJZFN0
YXR1cy5pc1NldCgpKQorICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAg
ICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBP
cEluZm8ocHJpdmF0ZUZpZWxkUHV0S2luZCksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAocHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkg
eworICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1cy5t
YWtlc0NhbGxzKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAg
ICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIp
LCBPcEluZm8ocHJpdmF0ZUZpZWxkUHV0S2luZCksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3Jh
cGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0
QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQ
dXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7
CisgICAgCisgICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRC
eUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgOiB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgu
bV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFudHMgPSBw
dXRCeUlkU3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIg
PSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICBhZGRUb0dyYXBoKE11bHRpUHV0QnlPZmZzZXQs
IE9wSW5mbyhkYXRhKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIEFTU0VSVChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CisgICAgY29u
c3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBwdXRCeUlkU3RhdHVzWzBdOworICAgIAorICAg
IHN3aXRjaCAodmFyaWFudC5raW5kKCkpIHsKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpSZXBs
YWNlOiB7CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzU2V0KCkpOworICAg
ICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxh
bi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigp
LCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBzdG9yZShiYXNlLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CisgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb246IHsKKyAgICAgICAgQVNTRVJUKHByaXZh
dGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUoKSk7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0
QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQ
dXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7
CisgICAgCisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAg
ICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJp
dmF0ZUZpZWxkUHV0S2luZCksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIAorICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwor
ICAgIAorICAgICAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgIFRyYW5zaXRpb24q
IHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAgbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24o
KSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwor
ICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkgeworICAgICAg
ICAgICAgLy8gSWYgd2UncmUgZ3Jvd2luZyB0aGUgcHJvcGVydHkgc3RvcmFnZSB0aGVuIGl0IG11
c3QgYmUgYmVjYXVzZSB3ZSdyZQorICAgICAgICAgICAgLy8gc3RvcmluZyBpbnRvIHRoZSBvdXQt
b2YtbGluZSBzdG9yYWdlLgorICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldCh2YXJp
YW50Lm9mZnNldCgpKSk7CisgICAgCisgICAgICAgICAgICBpZiAoIXZhcmlhbnQub2xkU3RydWN0
dXJlRm9yVHJhbnNpdGlvbigpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAg
ICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3Jh
cGgoCisgICAgICAgICAgICAgICAgICAgIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5m
byh0cmFuc2l0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZSwgYWRkVG9HcmFwaChHZXRC
dXR0ZXJmbHksIGJhc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKTsK
KyAgICAgICAgfQorICAgIAorICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3Jh
cGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+b2Zmc2V0ID0gdmFy
aWFudC5vZmZzZXQoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZp
ZXJOdW1iZXI7CisgICAgICAgIAorICAgICAgICAvLyBOT1RFOiBXZSBjb3VsZCBHQyBhdCB0aGlz
IHBvaW50IGJlY2F1c2Ugc29tZW9uZSBjb3VsZCBpbnNlcnQgYW4gb3BlcmF0aW9uIHRoYXQgR0Nz
LgorICAgICAgICAvLyBUaGF0J3MgZmluZSBiZWNhdXNlOgorICAgICAgICAvLyAtIFRoaW5ncyBh
bHJlYWR5IGluIHRoZSBzdHJ1Y3R1cmUgd2lsbCBnZXQgc2Nhbm5lZCBiZWNhdXNlIHdlIGhhdmVu
J3QgbWVzc2VkIHdpdGgKKyAgICAgICAgLy8gICB0aGUgb2JqZWN0IHlldC4KKyAgICAgICAgLy8g
LSBUaGUgdmFsdWUgd2UgYXJlIGZpeGluZyB0byBwdXQgaXMgZ29pbmcgdG8gYmUga2VwdCBsaXZl
IGJ5IE9TUiBleGl0IGhhbmRsaW5nLiBTbworICAgICAgICAvLyAgIGlmIHRoZSBHQyBkb2VzIGEg
Y29uc2VydmF0aXZlIHNjYW4gaGVyZSBpdCB3aWxsIHNlZSB0aGUgbmV3IHZhbHVlLgorICAgICAg
ICAKKyAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAorICAgICAg
ICAgICAgT3BJbmZvKGRhdGEpLAorICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAgICAg
ICAgICAgYmFzZSwKKyAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2
YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKQorICAgICAgICAgICAgYWRkVG9HcmFwaChOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5LCBiYXNlLCBwcm9wZXJ0eVN0b3JhZ2UpOworICAgIAor
ICAgICAgICAvLyBGSVhNRTogUHV0U3RydWN0dXJlIGdvZXMgbGFzdCB1bnRpbCB3ZSBmaXggZWl0
aGVyCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDI5MjEgb3IKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MjkyNC4KKyAgICAgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFu
c2l0aW9uKSwgYmFzZSk7CisgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBp
bGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxp
bmVkUHV0QnlJZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGRlZmF1bHQ6
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9IH0KK30KKwog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7CiAgICAgY2xlYXJD
YWNoZXMoKTsKQEAgLTYwNjQsNiArNjE3OSw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5
X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfcHJpdmF0
ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChi
eXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5t
X3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2wgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSBmYWxz
ZTsKKworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1czsK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVN
YXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KCkpKS5i
eVZhbEluZm87CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlz
IG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxs
LgorICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRp
b24uIEZvciBgcHV0X3ByaXZhdGVfbmFtZWAsIHdlIG1pZ2h0IGhhdmUgc29tZSBpbmZvIGZyb20K
KyAgICAgICAgICAgICAgICAvLyBMTEludCBJQywgaW5jbHVkaW5nIGNhY2hlZCBjZWxsIHRoYXQg
d2UgY291bGQgdXNlIGlmIEJ5VmFsIGlzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjc3OQorICAgICAg
ICAgICAgICAgIGlmIChieVZhbEluZm8gCisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5m
by0+c3R1YkluZm8KKyAgICAgICAgICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25z
dGFudFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNl
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNh
Y2hlZElkOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENl
bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlk
ZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZp
ZXJOdW1iZXJdOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9n
cmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkp
OworCisgICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5
VmFsSW5mby0+c3R1YkluZm8sIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0
QnlPZmZzZXQpCisgICAgICAgICAgICAgICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRl
Y29kZS5tX3B1dEtpbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5k
KSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X3ByaXZhdGVfbmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9k
YXRhX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcERlZmluZURhdGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTc1MTgsNyArNzY3OSw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAg
ICBQdXRCeUlkU3RhdHVzIHN0YXR1czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAg
ICAgICAgICAgICAgICBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCB1aWQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlk
LCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0
YXR1czo6VGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJp
YW50cygpICE9IDEKQEAgLTgyOTUsNyArODQ1Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAg
ICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29k
ZSkpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlm
aWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwg
Ynl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJ
ZCkgewpAQCAtODMwNiw3ICs4NDY3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRy
KTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9H
cmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsK
KyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJl
Y3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29k
ZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFu
ZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQg
c3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAy
ZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFjZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWEx
MmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9z
dXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2Fz
ZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGlu
ZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ug
d2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklU
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjZmUxZjgx
N2E1M2YyMDZkMjhmNzA3NTc5YzhjOWU0N2ZhYjhiZGI4Li5kOTU5YjAxZGUwYzFjMjFlMmZiNzhj
N2MyMGJkNjcwZmUxZmQ3YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CmluZGV4IDVlMmJkOWM5NWUwODJiMjgwM2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjA1OGRjYmZm
OWM2MDRjYjNlYzRiNmM4NTlmMTNjZTk5NThjMjhmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAy
ICs2NTgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlk
OiB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQobm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEo
KSwgbm9kZS0+Y2hpbGQyKCksIGlzRGlyZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCks
IGNoYW5nZWQsIGFscmVhZHlIYW5kbGVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQ
dXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAg
ICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAg
ICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUq
IGNoaWxkID0gY2hpbGRFZGdlLm5vZGUoKTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENl
bGxVc2UpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUg
YmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0
cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3Rh
dHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAg
ICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgICAgICAgIEFTU0VSVChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxh
bi5pc0ZUTCgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wg
YWxsR29vZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBu
ZXdTZXQ7Ci0gICAgICAgICAgICAgICAgVHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVz
LnZhcmlhbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9u
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZShtX2dyYXBoLm1fdm0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25k
aXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9y
aWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtu
b3duQ2VsbFVzZSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFhbGxHb29kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFu
c2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5l
d1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVy
ZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5
SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJn
ZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
aWYgKCFhbGxHb29kKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
ICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVm
b3JlLgotICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgp
OwotICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4
SW5CbG9jaywgdHJhbnNpdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENv
bnRyYWRpY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7Ci0KLSAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFs
bG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dy
YXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmln
aW4uc2VtYW50aWMsIHN0YXR1cykpLAotICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBl
bWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwg
aWRlbnRpZmllck51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgp
KTsKLQotICAgICAgICAgICAgICAgIE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZh
cmlhbnRzID0gc3RhdHVzLnZhcmlhbnRzKCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRp
Zmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvTXVsdGlQdXRCeU9mZnNldChkYXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGly
ZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZv
bGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUt
PmNoaWxkMigpLCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2Vk
LCBhbHJlYWR5SGFuZGxlZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKQEAgLTE0NzAsNiArMTM4NSw5NSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAg
IAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5k
ZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdlLCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwg
UHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBi
b29sJiBhbHJlYWR5SGFuZGxlZCkKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0g
bm9kZS0+b3JpZ2luOworICAgICAgICBOb2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsK
KyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS51aWQoKTsKKworICAgICAgICBBU1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxV
c2UpOworCisgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2Rl
KGJhc2VOb2RlKTsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5m
b3JOb2RlKHZhbHVlRWRnZSk7CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUu
aXNGaW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVz
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVl
Lm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkudWlkKCksCisgICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxk
UHV0S2luZCk7CisKKyAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAg
ICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRM
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25W
ZWN0b3IgdHJhbnNpdGlvbnM7CisgICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1f
dm0pOworICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxp
ZGl0eShzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJl
KSksCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9y
VXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4s
IGNvbmRpdGlvbi5vYmplY3QoKSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlv
bikgeworICAgICAgICAgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgp
IHx8IHByaXZhdGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUoKSk7CisgICAgICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQuYWRk
KG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkgfHwgcHJpdmF0ZUZp
ZWxkUHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVy
IHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAgICBtX2ludGVycHJldGVyLmRpZEZvbGRD
bG9iYmVyV29ybGQoKTsKKyAgICAgICAgbV9pbnRlcnByZXRlci5vYnNlcnZlVHJhbnNpdGlvbnMo
aW5kZXhJbkJsb2NrLCB0cmFuc2l0aW9ucyk7CisgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUo
YmFzZUVkZ2UpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rp
b24pCisgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworCisgICAgICAgIGFs
cmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQg
Zm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgIEVkZ2UoYmFzZU5vZGUpKTsKKworICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZSh1
aWQpOworICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSkgeworICAgICAgICAg
ICAgZW1pdFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNb
MF0sIGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpOworCisgICAgICAgIE11bHRp
UHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFk
ZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9IHN0YXR1cy52YXJpYW50cygpOworICAgICAg
ICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgbm9k
ZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChkYXRhKTsKKyAgICB9CisKICAgICBJblBsYWNl
QWJzdHJhY3RTdGF0ZSBtX3N0YXRlOwogICAgIEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFi
c3RyYWN0U3RhdGU+IG1faW50ZXJwcmV0ZXI7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9u
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDE4Yjg4Mzk2
OWI2OTBmMTNmNmZmYmZiN2Q3NTZiYjNjYTIyMDhjNzkuLjdkZjNkMzVkNDI2MjhkY2QwOTRiYjVk
N2M5N2EwMTYxNjY0MzcwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTMyMSw2ICszMjEsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJ
ZDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6Cisg
ICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNl
IFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGI2YzBiYjhiYTk5MGZmZjM1YzAwM2M4
NjAxN2VlMDY3MzQxMGUwMzguLjVlYmE3ZDFmMmM2OGQwNGM5MWVlNjAxNDkxYTE3OGZjYTgwMTlh
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTkwNSwxMiArMTkwNSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorCisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVj
dHVyZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21p
c2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgICAgICBjYXNlIENyZWF0ZUFz
eW5jR2VuZXJhdG9yOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCdXR0ZXJmbHk6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGE1Y2RmMWFhNmYzZDJkOWIxZTg2ZWQ1YmQyMzE4YjYyZDZhYzhlZTkuLjA0ZTAy
NWFiMmYxMWJlMjg2NTZhNTliNTcxMjY1MGNmNTg3ZDNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIK
ICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpA
QCAtNjE1LDcgKzYxNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1B1dEJ5
T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlk
RGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNl
dCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGly
ZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNldCB8
fCBtX29wID09IFB1dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7
CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAg
IGNoaWxkcmVuLnNldENoaWxkMihiYXNlKTsKQEAgLTYyNSw3ICs2MjYsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KE11bHRpUHV0QnlPZmZzZXRE
YXRhKiBkYXRhKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29w
ID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gpOworICAgICAgICBBU1NF
UlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1
dEJ5SWRGbHVzaCB8fCBtX29wID09IFB1dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJ
bmZvID0gZGF0YTsKICAgICAgICAgbV9vcCA9IE11bHRpUHV0QnlPZmZzZXQ7CiAgICAgfQpAQCAt
MTA4Nyw2ICsxMDg4LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyODMs
NiArMjI4NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgYm9vbCBo
YXNQcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIGlmIChvcCgpID09IFB1dFBy
aXZhdGVOYW1lIHx8IG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcml2YXRlRmll
bGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhh
c1ByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisgICAgfQorCiAgICAgYm9v
bCBoYXNBcml0aE1vZGUoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNjk2MjE5YzhkZjExZDMzNmRjNzBm
OWE0ZmE4MGQ4Yjg1MzQyOGIwYS4uZGE4N2QzZjFjMmZhYjYwZGNhMmYxZWJhOGU2OGNjZGRlMDYz
NzUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjEwLDYg
KzIxMCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRC
eVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1h
Y3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAor
ICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
UHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0
QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
aW5kZXggMGU0YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOS4uNDMzNTI2NTli
MmFlMGFjMzU5N2Q5ZDVkYTg4OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJI
ZWFwQ2VsbC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ4LDYgKzQ5LDcg
QEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92
YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9k
ZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhQ
cml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsg
fQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOWQzZjg5ZTY2ZWFlNjhjNmNkMTU0M2M3N2M1
N2Y1OTBkOTc4NzQ3OC4uZmYzNjI4NDAyMTlhYjQyY2E3MDc1N2NkOWU1ZGNhZDlkNmUyZGJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzNzgsNiArMTM3OCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6
CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIFB1dENsb3N1
cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICAgICAgY2FzZSBQdXRU
b0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFmMWNmNS4uOTE3ZGUw
MmZlNmJlMjhiYzNjODc2OTJkYjBhNTdmYzllODQyNzQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNl
IFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmlu
ZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2Fz
ZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFkZTVlZDE1NWFjMC4u
OGFkNGZmOGY2YWE4OGNiYWVmZTg0YmEyZDFhOWYzMDNkNzBhMmZlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM1MjQsNiArMzUy
NCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2Rl
KiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQoreworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKworICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHlW
YWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgcHJvcGVy
dHlHUFIpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShw
cm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZElt
bTMyKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOworCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworCisgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVj
ayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAvLyB0byBjaGVj
ayBpdCBoZXJlLgorICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQo
KS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0S2lu
ZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKworICAgIG5vUmVz
dWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMjcyNCw3ICsxMjc2Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hH
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2Rl
LT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAgICAg
bm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjczOSw3ICsxMjc3Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkp
OwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjc1NCw3ICsxMjc5Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDM5Niw3ICsxNDQzNCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5k
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNt
YU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMWI2
MzIxN2UzNmM3MWViMWVmMGEzNmQ4OTJjMGU2MWQyMGZlM2U1Mi4uZjA4ZGZlNzYyNzJhYjQ0ODUy
YmU0MGQxZmRjY2VkNzJkMzg4MjBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM2MCw2ICsxMzYwLDggQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwg
RWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBj
aGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2
YXRlTmFtZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5T2Zmc2V0KE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTWF0
Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOTc0ZTdhOTZhOGFhMmVkMjcwODEyNWFm
NGUwYTFjMzY4ZjhmNGQ1YS4uNjA5NTMxYjhmNTY0YjlkOWFjODZmYThmYWU4ZTMzMGZkZDAwMmVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0yNTkwLDYgKzI1OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAg
ICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAg
IGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMDM5MzA3ZjEyZDlmNTUwMWNmYjYzYTNjM2Qy
M2YxMTJjNjM1ZDk1My4uYzMyMzkzODYwMjI1MTdiZTllNGIzNTBlZTdmYjNhZTliYmYzMGU2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0yOTQ4LDYgKzI5NDgsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVO
YW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29t
cGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0
QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCAwNzE1M2I4ZTQ3MTJmNjgy
OWI2ZWJjNjMyMTc0NjZmODNkNDZjMWM0Li43MGU3ODM5OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkx
MmQ4ZDM5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjY2LDYgKzI2NiwxMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBlbWl0IElDIGNvZGUgd2hlbiB3ZSBoYXZlIGEgbm9uLW51bGwgY2FjaGVh
YmxlSWRlbnRpZmllciBhbmQgd2UgbmVlZCB0byBpbnRyb2R1Y2UgYQorICAgICAgICAgICAgICAg
IC8vIGJhcnJpZXIgZm9yIGl0LiBPbiBQdXRQcml2YXRlTmFtZSwgd2UgcGVyZm9ybSBzdG9yZSBi
YXJyaWVyIGR1cmluZyBzbG93IHBhdGggZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgIGNvbnNp
ZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2Fz
ZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYzgwYjE2ODQ0
YWFiYWNkODU2Njk2ZDg0NWY4MWMzYzZmOTc3Mzk3YS4uYjZhODJjNzFkNDRlOTQ3Y2UyOWQyZTI3
OWIwYzAzNjhmZGZhYzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMzk0LDYgKzM5NCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgTWF0
Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IGFjYTllNDRiZGFhODQ0OTg4NDQxYTlkNzk3YTFkYzY5OGVlZDc5MGIu
Ljg3ZDkzOTU4YTUyMTJlNmU5YzQzMTQwOWU1OTI4NGRiNjgxZWJkOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMTcsNiArMTAxNywx
MiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
KyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoK
ICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hhbmdlOgpAQCAtMzk0NSw2ICszOTUxLDMy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZVB1dFByaXZhdGVOYW1lQnlJZCgpCisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmlu
ZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAvLyB0byBjaGVjayBp
dCBoZXJlLgorICAgICAgICBhdXRvIHB1dEtpbmQgPSBtX25vZGUtPnByaXZhdGVGaWVsZFB1dEtp
bmQoKS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0
S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgICAgICBjYWNoZWRQdXRCeUlkKG1fbm9k
ZSwgYmFzZSwgdmFsdWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHV0S2luZCk7CisgICAgfQorCisg
ICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2Us
IG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKwor
ICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLAorICAg
ICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
LCBtX291dC5jb25zdEludFB0cigwKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnByaXZhdGVG
aWVsZFB1dEtpbmQoKS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQXRvbWlj
c1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAt
NDE5MSwxNCArNDIyMywxMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHZvaWQgY2FjaGVkUHV0QnlJZChOb2RlKiBub2Rl
LCBMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBw
dXRLaW5kKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKTsKLQotICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpOworICAgICAgICBBU1NFUlQoaWRl
bnRpZmllcik7CiAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQu
cGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVy
KGJhc2UpOwpAQCAtNDIxNCw3ICs0MjQyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSog
c3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5l
Y21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQyMzMsNyArNDI2MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0
Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC00MjYx
LDYgKzQyODgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisKKyAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/
IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdDsKKyAgICAgICAgY2FjaGVkUHV0
QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZj
N2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJlNzljZDQ2YTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5LDkgKzEzOSw5
IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJh
dGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByaXZh
dGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRv
VGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCA3NjI1MjAxOTc4YTJlNmE4OWEzZWE0MTI4ZjY0MDc2Mzc5NTZlODIyLi45YWQyZjNi
ZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYyM2ZkZmQ3ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQor
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkBAIC01
ODcsNiArNTg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikK
QEAgLTkwMiw3ICs5MDQsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAg
ICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1Nl
dCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihw
YXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKwor
ICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIGlmIChK
dW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGJhZFR5
cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVK
dW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBu
ZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbklu
Zm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJnZXQg
PSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFyZ2V0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYxZWIzMTZmZTMzMzlhOTdk
NTBlYzU0YjE5NTZjNzk3Li5iNDViZTNhZDUwMjc5MTUwYjc5MjQzYTA0ZmZiZWMxMWY5MzFmOTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbERpcmVj
dDsKKyAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQdXRUb1Njb3Bl
OwogCiAgICAgc3RydWN0IENhbGxSZWNvcmQgewpAQCAtMTYxLDYgKzE2MiwxNSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQnlWYWxDb21waWxhdGlv
bkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFy
Z2V0KQorICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQorICAgICAgICAgICAgLCBi
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAsIG5vdEluZGV4SnVtcChu
b3RJbmRleEp1bXApCisgICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdldCkKKyAgICAg
ICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgIHsK
KyAgICAgICAgfQorCiAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwogICAgICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG5vdEluZGV4SnVtcDsKQEAgLTIzNCw2ICsyNDQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcD4o
YnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hl
ZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwor
ICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hl
ZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgfQor
CiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1OSw2ICsyNzYsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAorICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisKICAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBK
SVRBcnJheU1vZGUpOwogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5
TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CkBAIC00MDYsMTEgKzQyNSwx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHRoZSB0eXBlIG9m
IHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKE9wKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQ
dXRLaW5kKE9wKTsKIAogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0
QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVj
ayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBl
bWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcyk7CisK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIApAQCAtNjA1
LDYgKzYyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRl
cl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Niw2ICs3MDgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19pbmRleGVkX3By
b3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCmluZGV4IGFlNjFkOTE4NWZlYzc1YmVlZWVhMWRjNDNiYjZhNDcxZjJi
ZDdjZTcuLjk1ZTU5ODJkYmQxMjFkOGFmMzJmMjUxNmZiNjIwMGI2MDVhYjZkOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJZEdlbmVy
YXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2Rl
IGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5k
KQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQot
ICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5k
KQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBA
IC0xNTEsMjIgKzE1MCwyMiBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKLSAgICAg
ICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOwotICAgICAgICBBU1NFUlQobV9lY21hTW9k
ZS5pc1N0cmljdCgpKTsKLSAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgIH0K
LQotICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKLSAgICAgICAgaWYgKG1fcHV0S2lu
ZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChtX3B1dEtpbmQpIHsKKyAgICBjYXNlIFB1dEtpbmQ6
Ok5vdERpcmVjdDoKKyAgICAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBQdXRLaW5kOjpE
aXJlY3Q6CisgICAgICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAobV9wdXRL
aW5kID09IERpcmVjdCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3RPcHRpbWl6ZTsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplOworICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lOgorICAgICAg
ICBBU1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNT
dHJpY3QoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemU7CisgICAgfQogfQogCiBKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMjljMmQyZTZkMzI4ZGE5Y2Iz
NzYxMTVkOTkyZWEyYTJjNTBjNTk5NC4uODUzODM1YTM5MzU4NTI5MTI3ZGUyZjM5N2I0OTc5OTgy
NGUzNmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4u
aCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgot
I2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsxMzAsMTEgQEAgY2xhc3MgSklUUHV0QnlJ
ZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3Qo
KSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6Tm9uZSkKICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAot
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRL
aW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOworICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAK
ICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0
NSw3ICsxNDMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7
CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IDJmNzZkYjAwNjkyMTE4YWY4NTJlNzA2Mjk1MDI3NDI5OTg1YWNm
YjIuLmQ4ZTVkYTEyYTMwY2M2Mjk5ZDEwYjMxMWYzZWRjODA1ZDRmYzU0OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC02OTksMjEgKzY5OSw5IEBAIEFMV0FZU19J
TkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0K
IAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0
QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2Rl
IEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAg
ICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLVByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9w
KQotewotICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOwotfQotCi10ZW1w
bGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRl
RmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCi17
Ci0gICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJl
dHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNGY0NTI0ZGM3MmI0
ZDkxYjcyOWVhOTVlYzhkMjYwZWMxODU2NDJmNC4uYzM5MjVlOGEwOWY0NWJjNDRmMzNiODVjMTZm
OTE3ODk4ODkyZTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC02MDAsNyArNjAwLDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwg
Y29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoUHV0QnlJ
RChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKworICAgICAgICByZXBhdGNoUHV0QnlJ
RChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgUHV0S2luZDo6Tm90RGlyZWN0KTsKIH0KIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQpAQCAtNjMyLDcgKzYzMyw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikpCi0gICAg
ICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN0
cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgICAg
ICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1
Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgUHV0S2luZDo6Tm90RGlyZWN0KTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQpAQCAtNjYzLDcgKzY2NCw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBp
ZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwg
aWRlbnRpZmllcikpCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywg
RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBQdXRL
aW5kOjpEaXJlY3QpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
CkBAIC02OTQsMTMgKzY5NSwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29k
ZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoUHV0QnlJRChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVy
LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNs
b3QsICpzdHViSW5mbywgUHV0S2luZDo6RGlyZWN0KTsKIH0KIAogfSAvLyBleHRlcm4gIkMiCiAK
IHVzaW5nIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwg
Q29kZUJsb2NrKiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmll
ciYpPjsKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgYmFzZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFs
dWUsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVG
aWVsZENhbGxiYWNrKCkpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHNldFByaXZhdGVGaWVs
ZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBjb25zdCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQ
dXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIApAQCAtNzEyLDcgKzcxMyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2
bSk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2Rl
QmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwotICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgYmFzZU9iamVjdC0+
c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgaWYgKGNhbGxiYWNr
KQpAQCAtNzcwLDExICs3NzEsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAgICAgICAg
QVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIp
KQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmll
ciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUp
OwogICAgIH0pOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtNzgzLDEw
ICs3ODQsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRl
RmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogCi0gICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7Cisg
ICAgc2V0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBpZGVudGlmaWVyLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNzk4LDEzICs3OTksMTMgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKIAotICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbJl0o
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1
dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICBz
ZXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBp
ZGVudGlmaWVyLCB2YWx1ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5m
byh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CiAKICAgICAgICAg
QVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIp
KQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3RQcml2YXRlRmllbGRQdXQpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwg
cHV0U2xvdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQpOwogICAg
IH0pOwogfQogCkBAIC05NDcsNyArOTQ4LDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0
cnlQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAg
ICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CiAgICAgICAgICAgICBp
ZiAoYnlWYWxJbmZvLT5zZWVuKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2Fj
aGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpJVDo6
Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KHZtLCBjb2RlQmxvY2ssIGJ5
VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgTm90RGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElkKTsK
KyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQ
dXRCeVZhbD4odm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBQdXRLaW5k
OjpOb3REaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOwogICAgICAgICAgICAgICAgICAgICBv
cHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZDsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBn
ZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgpAQCAtMTAzNyw3ICsxMDM4LDcgQEAgc3RhdGlj
IE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91
dGluZSk7CiAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlW
YWxEaXJlY3Q+KHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgRGlyZWN0
LCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxl
UHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4odm0sIGNvZGVCbG9jaywgYnlW
YWxJbmZvLCByZXR1cm5BZGRyZXNzLCBQdXRLaW5kOjpEaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVk
SWQpOwogICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRp
b25SZXN1bHQ6Ok9wdGltaXplZDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgpA
QCAtMTExOSw2ICsxMTIwLDEwOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0
UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZh
bHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1
YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAg
ICBPcHRpbWl6YXRpb25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVz
dWx0OjpOb3RPcHRpbWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7
CisgICAgICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7CisgICAgICAgIEFTU0VSVChj
YWxsRnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAhPSBCeXRlY29kZUluZGV4KDApKTsKKyAgICAgICAg
QVNTRVJUKCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAgICAgaWYgKGJ5VmFsSW5mby0+
c2VlbikgeworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJv
cGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVX
aXRoQ2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5lcmlj
IHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3Vs
dCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+
c2VlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAg
ICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVu
T25jZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNv
ZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQgJiYg
b3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2UpIHsKKyAg
ICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEwIHRpbWVzIHdpdGhvdXQg
cGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2ZXIgbWFrZSB0aGF0IG1p
c3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZiBvcHBvcnR1bml0
eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBwdXRfcHJpdmF0ZV9uYW1l
IG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQgdXAgc2xvd1BhdGhDb3Vu
dCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBpZiAoKytieVZhbEluZm8t
PnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBP
cHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9u
UmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CisgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7
CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIAorICAgIC8vIFByaXZhdGUgZmll
bGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAg
Ly8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0
IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3Ry
aWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVj
dC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKworLy8gV2UgbmVlZCB0
byBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmll
bGRQdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBz
dWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVY
Q0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBj
bGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBp
biBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBh
dXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHByaXZhdGVGaWVsZFB1
dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAg
ICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKaW5kZXggNjVlNzEyNTk1NjgzMGE4ODNlODMzMzA3OTUzOWUyMDQ0MmMwNWQ5NC4uNjcwNTUx
MGQ5YTQ1ODFkZGIxMDc3MGQ3NDQwNjAxZjgzYjBjOWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklU
KQogCiAjaW5jbHVkZSAiSklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4K
QEAgLTE5MSw5ICsxOTIsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHUKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVS
TkFMOwogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMmIyNzQxZWQxNzE5YTQ3
Mzg5MjhhMGYyYzYxYmUzZTJkZGQ0NzQzYS4uNmU2OGViNmViMDUzZjk5NDU1OTJiY2ZiZTg2M2Nl
N2QyNjM3ODVjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2Fs
bC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Njb3Bl
ZExhbWJkYS5oPgpAQCAtMzE2LDcgKzMxNyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUt
YmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9u
YWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6
ZS4KQEAgLTM0Niw3ICszNDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1v
ZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29k
ZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0zNjksNiArMzcw
LDQ3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29k
ZUJsb2NrLT5hZGRCeVZhbEluZm8obV9ieXRlY29kZUluZGV4KTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFi
bGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVs
IGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5k
KEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0
aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4
XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUu
bV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93
UGF0aCA9IGxhYmVsKCk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOworCisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIp
OworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtp
bmQudmFsdWUoKSkpOworCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29tcGls
YXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsK
KyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJC
eUlkPigpOwpAQCAtNzAwLDcgKzc0Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKLSAgICAgICAgZGlyZWN0
ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7
CisgICAgICAgIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7
CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzU4LDcgKzE0MDAsNyBAQCBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5k
IHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3Bl
cnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNt
YU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xMzc3LDYgKzE0MTksMTIg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAor
SklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChP
cFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKK3sKKyAgICBhdXRv
IHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAg
ICByZXR1cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBwcm9w
ZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRXcml0
ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7
CiAgICAgQVNTRVJUKG1vZGUgPT0gVW5jb25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2RlID09
IFNob3VsZEZpbHRlckJhc2UpOwpAQCAtMTQ2NiwxMCArMTUxNCw0MiBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQ
dXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5
VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUlu
ZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1bXBM
aXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1dFBy
aXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNlcywg
c2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxvY2sp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRoVGFy
Z2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25lVGFy
Z2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIHBhdGNo
QnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxl
cik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgeworICAgICAg
ICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxs
U2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxpemUocGF0
Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBG
SU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIs
IEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFt
ZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFsSW5mby0+
c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxOb1B0clRhZz4o
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlW
YWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9
PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYmIE9wOjpv
cGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAgQVNTRVJUKChwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdCAmJiBPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpIHx8IChw
dXRLaW5kID09IFB1dEtpbmQ6Ok5vdERpcmVjdCAmJiBPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5
X3ZhbCkpOwogICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIo
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKIApA
QCAtMTQ5MywxMSArMTU3MywxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdp
dGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogCiAgICAgYnlW
YWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1f
Y29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIg
Zm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9kaXJlY3Qi
IDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAiQmFzZWxp
bmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAl
cywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGly
ZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKICAgICBieVZhbElu
Zm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CiB9CiAvLyBU
aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVu
aXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0
ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUz
MTNiMmFmMzA4MWViMGY1YzFlYTRjMzA1NzQ4Li40ZjYzNzI3MzEzMDc5YzM0MjgwNzViZjMwMmUw
M2JmY2VkMGU4M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmUKIH0KIAogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZv
ID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1p
dExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAg
ICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNs
b3dDYXNlKGZhc3RQYXRoSm1wKTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5
VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlW
YWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0g
Ynl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBM
YWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdU
MSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOwor
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxv
YWRHUFIoKSk7CisgICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZv
LCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRp
b25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRo
OworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJl
dHVybkFkZHJlc3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisK
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxE
aXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0g
ICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJl
Z1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVj
dCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAyZWJiMTNhZmRhNDBlMTY0MGMzYmQ5MzE4MmFm
MmM1NWNhZDU4ZjFhLi43OWIxYjdiMWU1ODBiZDIyZDFhOTM2OWFhZmYwYzk0YTFhY2I5ZGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUzNSwzNCArNTM1LDQyIEBA
IHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0
S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCiB7Ci0gICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2UgUHV0S2luZDo6Tm90RGlyZWN0Ogor
ICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdDsKKyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQotICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Q7
Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKLSAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdDsKKyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAg
ICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdDsKKyAgICB9CiB9CiAKIHN0YXRpYyBhdXRv
IGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3RPcHRpbWl6ZSkKIHsKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewot
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChwdXRLaW5kKSB7Cisg
ICAgY2FzZSBQdXRLaW5kOjpOb3REaXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBj
YXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwot
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplOwotICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplOwotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAg
IH0KLSAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVs
ZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwor
ICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQo
c2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgfQogfQogCiBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5k
KQpAQCAtNjA5LDYgKzYxNyw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoaXNQ
cm94eSAmJiAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0
S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpKQorICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBz
bG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKQEAgLTY2OSw4ICs2ODAsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jawogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAg
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwotICAgICAg
ICAgICAgICAgIGlmIChwdXRLaW5kID09IE5vdERpcmVjdCkgewotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQocHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRQdXQgJiYgcHV0S2luZCAhPSBE
aXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09
IFB1dEtpbmQ6Ok5vdERpcmVjdCkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3Rh
dHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBudWxs
cHRyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjg4LDcgKzY5OCw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmll
bGRDcmVhdGUpIHsKKyAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50
LmlzUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdl
bmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJsb2NrLCBnbG9iYWxPYmpl
Y3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQpAQCAtMTUyMSw4ICsxNTMxLDggQEAgdm9pZCByZXNl
dFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0
T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0U3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKLSAgICBlbHNlIGlmICh1bm9wdGlt
aXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QgfHwg
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemUpCi0gICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGVsc2UgaWYgKHVub3B0aW1pemVk
RnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdCB8fCB1bm9w
dGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RP
cHRpbWl6ZSkKKyAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkU2V0
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5j
dGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0IHx8IHVub3B0
aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRE
ZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5k
ZXggZjYxMGMxOTc3NDY5ZGNkOGM4ZTMwNDYzMWNhYzc0NmJkNDI4NDEzZi4uYzhjMjYxNTI0M2Fk
OGMwYTZkZWRkMGUwZWYzNTQ1YTQ2NzQ4NzExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDkgKzU5LDkg
QEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUg
IlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNs
dWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKyNpbmNs
dWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGQ0ZDA5MTZmZjJk
NzYxNDQwNDNhMzk1ZDNlOGE4MTgzMDcyMDE0NmEuLmY5YTkwN2VkNDFiZGU0NTZjZjBkOWQ3ZTE5
YjNmOTFiNGJkMWRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMTE3Nyw0OCArMTE3NywxMjcgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
YmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBi
eXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CisgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKLSAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RN
b2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90
VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAgICBpZiAoc3Vic2NyaXB0
LmlzRG91YmxlKCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7Ci0g
ICAgICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwot
ICAgICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihzdWJzY3JpcHRBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBz
dWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewotICAgICAg
ICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRB
c1VJbnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKLSAgICAgICAgICAgIExMSU5UX0VO
RCgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBp
ZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93
U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIEFTU0VSVChw
cm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgp
LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1
dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQ
cml2YXRlRmllbGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFn
cy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmlu
ZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgIExMSU5U
X0VORCgpOyAgICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGly
ZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAg
IEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJv
cGVydHkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBBU1NF
UlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
dm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vz
c2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMg
YXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0g
dHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKGJ5
dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIGVs
c2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlzU2V0KCkpOworICAgICAg
ICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJhc2VWYWx1ZS5pc0NlbGwo
KQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAgICAgJiYgc3Vic2NyaXB0
LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNh
Y2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIGlmIChvbGRT
dHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9IHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAg
ICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQor
ICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOworCisgICAgICAgICAgICAg
ICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3RvKGEsIGIpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
KS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBv
cHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJhcmVEYXRhKCktPnNoYXJl
ZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgi
RGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFy
aW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlE
ID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICBtZXRhZGF0YS5t
X25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigp
OworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwo
KTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJl
KHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAg
ICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAg
ICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFj
aXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3Ry
dWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8gPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
Z2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWluICYmICFzYXdQb2x5UHJv
dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT5p
c09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0
cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJl
LT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHku
c2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnQgaGVs
cHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRvIGRpc2FibGUgY2FjaGlu
ZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0aGVuIHN0b3JlIHRvIGFu
IGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZworICAgICAgICAgICAgICAg
IC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3ZSByZWlmeSBhIGxhenkg
cHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRvIGRpc2FibGUgY2FjaGlu
Zywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNlIElDIGRvZXMgbm90Cisg
ICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2UgdHlwZXMgb2Ygc3RydWN0
dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgLy8gdHJh
bnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG5ld1N0cnVj
dHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNj
cmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZjMzA4ZDlmM2RkZTI1Yjlm
ZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFlMThjYmZlODMzZjNhOWMx
Y2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZWJkMzZiYWNlZGQ0ZTAz
ODE0MDE2MjlmOTZhMTE2NWExZTdlOTM2Ni4uYTYwMmFiZjAzMjgyYjEyMGQzYzYxY2VmNzk5NjFh
MmEwOTAwMWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYxNCw2ICs2MTQsMTMgQEAgbWFjcm8g
d3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRBZnRlclNsb3dQYXRoKQog
ICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9h
ZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCisgICAgZ2V0
KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisgICAgd3JpdGVCYXJyaWVy
T25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKKy53cml0ZUJhcnJpZXJE
b25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIGNlbGxG
aWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUp
CkBAIC0xNjkzLDYgKzE3MDAsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0
ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNw
YXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwg
T3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fYmFzZSwgbV92
YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBn
ZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cpCisgICAgbWV0YWRhdGEo
dDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29sZFN0cnVj
dHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
Lm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRh
ZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQxLCAub3BQdXRQcml2YXRl
TmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToKKyAgICAjIHQwIC0+IG9i
amVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAorICAgICMgdDUgLT4g
bWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX25ld1N0
cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RUcmFuc2l0aW9uCisKKyAg
ICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJP
bk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNybyAoKQorICAgICAgICAj
IFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKKyAgICAg
ICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jhc2UsIHQxKQorICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDAsIC5v
cFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5vdFRyYW5zaXRpb246Cisg
ICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhl
IGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0
MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0ZU5hbWVTbG93OgorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCisgICAgZGlz
cGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUl
LCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCBlMjc2MDkyOGEwZmM5NDEzOTgwOWZkM2U4Y2M4ZmUyMWJhOTc5
NzlhLi4wYTM1OWRlZTMyZGMwMzYwM2Q2Y2Q5NDZkYjExNTgwZDQyZjI5OTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZh
dGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlz
cGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUs
IE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQorICAgIGdldChtX3Byb3Bl
cnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDEsIC5v
cFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BQ
dXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJp
bmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQcml2YXRlTmFtZVNsb3cK
KworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3Q1XSwg
dDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdworCisgICAgIyBBdCB0
aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKKyAgICAjIHQyIC0+
IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0YQorCisgICAgbG9hZGkg
T3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAg
IGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3JlaSB0MSwgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6
ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2FkIG1ldGFkYXRhIGludG8g
dDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJlbG9hZCBiYXNlIGludG8g
dDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJhbnNpdGlvbjoKKyAgICAj
IFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGljaCBob2xkcyB0aGUgYmFz
ZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0
W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQor
ICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1fdmFsdWUpCisg
ICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQp
CisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9p
bnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAg
IG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYWUzM2ZmZjQwMzQ5NDZjNjczZThmOWI1ZDk4
ZjM3YTZhNDFjYWNjYi4uNTk5N2MwNzZjNzAxZjdiNmFiNmUyNjVmYTU4NmIwODc2MzM2YTBjOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xODIsNyArMTgy
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkU2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBpbmxpbmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGlubGluZSB2b2lkIHB1dFByaXZhdGVGaWVsZChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgaW5saW5lIHZvaWQgc2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBpbmxpbmUgdm9pZCBkZWZpbmVQ
cml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA5
NTQ1YzFlMTk1MWE4Y2U4ZDczYWEwMDExOWI1YzgyNGYzYmQ4ZTFmLi42YzUzOWZjZTMzNGRjNmE0
ZWJkZGMyOThjNGIwYjEwZGY1NzMxMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNjE3LDcgKzYxNyw3IEBAIGlubGluZSBib29s
IEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnVlKTsKIH0KIAot
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHB1dFNsb3QpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJpdmF0ZUZp
ZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCkKIHsKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
aXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJp
dmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZmZjg5ZDNmYzZiZjJkMzg0ZmFjYmQw
Yzk1NWZiNDdlOGFmNmY5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENv
cHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJpdmF0
ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChp
c1NldCgpKQorICAgICAgICBvdXQucHJpbnQoIlNldCIpOworICAgIGVsc2UgaWYgKGlzRGVmaW5l
KCkpCisgICAgICAgIG91dC5wcmludCgiRGVmaW5lIik7CisgICAgZWxzZSB7CisgICAgICAgIEFT
U0VSVChpc05vbmUoKSk7CisgICAgICAgIG91dC5wcmludCgiTm9uZSIpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0Y2EzMDQ4ZWM3ZGEwMWRi
YTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0cmVhbTsKK307CisKK25h
bWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2luZCB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBEZWZpbmUgPSAyOworCitw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQdXRLaW5kIGZyb21CeXRl
KHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChieXRlKTsgfQorICAg
IHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25lKCkgeyByZXR1cm4gUHJp
dmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRLaW5kKFNldCk7IH0KKyAg
ICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVmaW5lKCkgeyByZXR1cm4g
UHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBTZXQ7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IERl
ZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQodWludDhfdCB2YWx1
ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFs
dWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09IERlZmluZSwgbV92YWx1
ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDNkMDc2ZjJjYzYxYTBmOGNhNjY0ODYwMzdlYTY1MDJmZTNlYjU4M2IuLjYxMTAwNjYwZWI1
YmI0ZDAzZTUyZTlmMmFlM2E4MmVlZDkwYTRjZDMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDktMjIg
IENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdW0VTTmV4
dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVm
aW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMz
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1
c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0byBhdm9pZCBleGVjdXRp
b24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qczogQWRkZWQu
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2
YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seW1vcnBo
aWMtcHV0LXB1YmxpYy1maWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L3B1dC1wdWJsaWMtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXBy
aXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3Qu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxl
ZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9u
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jaGVjay1zdHJ1
Y3R1cmUtbWlzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
Y29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9m
ZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtZ2VuZXJp
Yy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1k
ZWZpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFs
aWQtc3RvcmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWlu
dmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3lt
Ym9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qczogQWRkZWQuCisKIDIwMjAtMDktMjAgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXN0MjYyIHVwZGF0
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZh
dGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYzZjOGM0OWJkZWQyZTJiY2IzNzY3N2Y0NjU0MTU1MWI4NmQ1NTYyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwyNiBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsKKyAgICAjZmllbGQ7CisKKyAg
ICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVlOworICAgIH0K
K30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMxID0gbmV3IEMoKTsK
K2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIgPSAwOworCitsZXQgYzMg
PSBuZXcgQygpOworYzMuYmF6ID0gMDsKKworbGV0IGFyciA9IFtjMSwgYzIsIGMzXTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBhcnJbaSAlIGFyci5sZW5ndGhd
LnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyNjI4ZDM4OGJiMDUwYjYyZTY1OThiZjdjODNhZmE0ODg2MDg1MjkKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9w
dXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDE2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7
CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90
b3R5cGUuc2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKGxldCBpID0gMDsgaSA8
IDUwMDAwMDA7IGkrKykgeworICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wdWJsaWMtZmllbGQuanMgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRhMzJmY2ZjNTU0ZTQ4ZWY0NzUzNzcxYzM5NWZiMmVlOGVhNjVlOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVi
bGljLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIEMgeworICAgIGZpZWxkOworCisg
ICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHZhbHVlOworICAgIH0K
K30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMxID0gbmV3IEMoKTsK
K2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIgPSAwOworCitsZXQgYzMg
PSBuZXcgQygpOworYzMuYmF6ID0gMDsKKworbGV0IGFyciA9IFtjMSwgYzIsIGMzXTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBhcnJbaSAlIGFyci5sZW5ndGhd
LnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9w
dXQtcHVibGljLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXB1YmxpYy1m
aWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NmZjY2UyZWY2NDE2NDgzZTYyMjczYzhmNTA0NWViNDQxNjg1
ZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXB1Ymxp
Yy1maWVsZC5qcwpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBDIHsKKyAgICBmaWVsZDsKKworICAg
IHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2YWx1ZTsKKyAgICB9Cit9
Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYy5zZXRGaWVsZChpKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJh
cnJpZXItaW5zZXJ0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1dC1wcml2YXRlLW5hbWUt
Y2hlY2stYmFycmllci1pbnNlcnRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY1ZTYzMDU1NzhkZWY2OGI0
ZTI2ZmZmOGU3MWNmOWUwYjk0OGZjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzCkBAIC0wLDAg
KzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1
ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24oYSwgZSkgeworICAgICAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwK
KyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQg
dGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7Cisg
ICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBp
bnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIg
KyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRp
b24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQor
CitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisg
ICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIiLCAicDMiXTsKKworICAg
ICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1trZXldID0gaTsKKyAgICAg
ICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworCisgICAg
ICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNbInAxIl0gPSBpOworICAg
ICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRGaWVs
ZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJv
dG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZH
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKwor
bGV0IG9sZE9iamVjdCA9IG5ldyBDOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgaWYg
KGkgPCA1MDAwKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGMuc2V0RmllbGQo
aSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGkgPT0gNTAwMCkKKyAgICAgICAgICAgIGdj
KCk7CisgICAgICAgIG9sZE9iamVjdC5zZXRGaWVsZCh7cHJvcDogaX0pOworICAgICAgICBlZGVu
R0MoKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShvbGRPYmplY3QuZ2V0RmllbGQoKS5wcm9w
LCBpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJp
dmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxl
ZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9y
KSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAg
ICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIg
YnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRo
cmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0
aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRp
b24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0g
dGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJw
MiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOworICAgICAgICB0aGlz
W2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAgICAgICAgdGhpc1si
cDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAgICAgICAgICAgdGhp
c1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0K
K30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDApIHsKKyAgICAgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYy5zZXRG
aWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIGMuc2V0Rmll
bGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1u
YW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFlNTJkMTcyYTcK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1j
b21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xp
c3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0
aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
ZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRp
b24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0
aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7Cisg
ICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQgYXJy
ID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNdOwor
ICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAgICAg
ICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgeworICAg
ICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQg
PSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9yICg7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUwMDAp
IHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3Ry
dWN0dXJlLXRyYXNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ2ZTQ1MzY0YjAyYjQzNTU0ZWQzNjJk
NGFhOGRlMTBiYzQ3ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUtdHJhc2l0aW9uLmpzCkBA
IC0wLDAgKzEsNTAgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAiLS11c2VBY2Nlc3NJbmxp
bmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiBmdW5jdGlvbihleGNl
cHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3
aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVj
dG9yKCkgeworICAgIHJldHVybiB7fTsKKyAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7
CisgICAgI2ZpZWxkID0gMDsKKworICAgIGdldEZpZWxkKGNoYW5nZVJlY2lldmVyKSB7CisgICAg
ICAgIGxldCByID0gdGhpczsKKyAgICAgICAgaWYgKGNoYW5nZVJlY2lldmVyKSB7CisgICAgICAg
ICAgICByID0ge307CisgICAgICAgIH0KKworICAgICAgICByLiNmaWVsZCA9ICdiYXInOworICAg
IH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygp
OworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgaWYgKGkgPCA5MDAwKQor
ICAgICAgICBDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMsIGZhbHNlKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwoYywgdHJ1ZSk7CisgICAgICAgIH0pOworICAg
IH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jaGVj
ay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY2hl
Y2stc3RydWN0dXJlLW1pc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE2OTVhMWFkZTM3NjljNjE0ZGRjOTMw
MTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKQEAgLTAsMCArMSw0MCBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQor
CitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisg
ICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJv
cGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIHNldEZpZWxk
KHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90
b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkco
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitm
b3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyAr
IGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZv
bGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMDJmYWE4OTFhZTQxNDAxZWVhY2ZkYWVkODM1ZjRlNDJkZjRlNWU0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5n
LXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDU3IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIsICItLXVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBp
ZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaXRlcmF0aW9ucyA9IDEwMDAwMDsK
K2xldCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2xldCBjb25zdHJ1Y3REaWZmZXJlbnQg
PSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5pdCgpOworCisgICAgaW5p
dCgpIHsKKyAgICAgICAgaWYgKGNvbnN0cnVjdERpZmZlcmVudCkKKyAgICAgICAgICAgIHRoaXMu
Zm9vID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbWV0aG9kKGosIG90aGVy
KSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgbGV0IG9iaiA9IHRoaXM7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8IGl0ZXJhdGlvbnM7IGkr
KykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgaWYgKGogJSAyKSB7CisgICAgICAgICAgICBv
dGhlci5mb28gPSBqOworICAgICAgICAgICAgb2JqID0gb3RoZXI7CisgICAgICAgIH0KKyAgICAg
ICAgb2JqLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5tZXRob2Qp
Oworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgb3RoZXJDID0gbmV3
IEMoKTsKKworY29uc3RydWN0RGlmZmVyZW50ID0gdHJ1ZTsKKworZm9yIChsZXQgaSA9IDA7IGkg
PCAzMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMubWV0aG9kKGksIG90aGVy
Qyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDApOworfQorCit0cmlnZ2Vy
Q29tcGlsYXRpb24gPSB0cnVlCitsZXQgYyA9IG5ldyBDKCk7CitjLm1ldGhvZCgwLCBvdGhlckMp
OworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlvbnMpOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8t
cHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY29uc3Rh
bnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MjBlYzgwNGE5NGY3
MWUzNThlYTdhYWU2YTZmZThkZWUyNTg1NTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5q
cwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZUFjY2Vz
c0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK30KKworbGV0
IGl0ZXJhdGlvbnMgPSAxMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2Ns
YXNzIEMgeworICAgICNmaWVsZCA9IDA7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIGxldCBj
ID0gMDsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21waWxhdGlvbiAmJiBpIDwg
aXRlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAgICB0aGlzLiNmaWVsZCA9
IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVs
ZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBj
ID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICBjLm1ldGhv
ZCgpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAwKTsKK30KKwordHJpZ2dl
ckNvbXBpbGF0aW9uID0gdHJ1ZQorYy5tZXRob2QoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRG
aWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1nZW5lcmljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1n
ZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNmMyOTljNjYyNzBiYWJjYTNkMDA3YjdhNzgzMDk3NzI3
OTRkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1l
LWdlbmVyaWMuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGFzc0RlY2xhcmF0
aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSB0
aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAgICAgICAgIHRoaXNbZHlu
YW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAgfQorCisgICAgICAgIHNl
dEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorCisg
ICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAg
ICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworICAg
IG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RGRyhDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCisgICAgcmV0dXJu
IEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNsYXJhdGlvbigncHJvcGVy
dHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBjLnNldEZpZWxkKCd0ZXN0
Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7Cit9CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1kZWZpbmUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVmaW5lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU5NTk4ZTcwMTlkMzc0ZDYwYWE5ZDdjZGE5Y2Y1NDJiNzE2N2YzYjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtZGVm
aW5lLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYg
KGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2Vw
dGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9
IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0
aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdp
dGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxkT3ZlcnJpZGVSZXR1cm4g
PSBmYWxzZTsKK2xldCBvYmo7CisKK2NsYXNzIEIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICBpZiAoc2hvdWxkT3ZlcnJpZGVSZXR1cm4pCisgICAgICAgICAgICByZXR1cm4gb2JqOwor
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAg
I2ZpZWxkID0gJ3Rlc3QnOworCisgIGdldEZpZWxkKCkgeworICAgICAgcmV0dXJuIHRoaXMuI2Zp
ZWxkOworICB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJv
dG90eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Cisg
IGlmIChpID4gMTAwMCkgeworICAgICAgc2hvdWxkT3ZlcnJpZGVSZXR1cm4gPSB0cnVlOworICAg
ICAgb2JqID0ge307CisgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZh
bHVlKEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwob2JqKSwgJ3Rlc3QnKTsKKyAgICAgIGFzc2Vy
dC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgICBuZXcgQygpOworICAg
ICAgfSk7CisgIH0gZWxzZSB7CisgICAgICBsZXQgb2JqID0ge307CisgICAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQoKSwgJ3Rlc3QnKTsKKyAg
ICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgICBjLmdl
dEZpZWxkLmNhbGwob2JqKTsKKyAgICAgIH0pOworICB9Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0N2NlYTYw
MDA1YTliNWY4NjhhMGI1M2JmMjFkNzVjMjRmYmIwOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5qcwpAQCAtMCwwICsxLDUw
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAg
ICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVu
Y3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAg
ICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQg
dGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNl
cHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOwor
ICAgIH0KK30KKworbGV0IHNob3VsZFN0b3JlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvbygpIHsK
KyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisgICAgI2ZvbzsKKworICAg
IGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3RvcmUpCisgICAgICAgIHRoaXMuI2ZvbyA9IDEy
OworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcgQygpOworfQorbm9JbmxpbmUoZm9vKTsKKwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAg
IHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAgfSBlbHNlIHsKKyAgICBmb28oKTsKKyAg
fQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlk
YXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlmMWI4MGIwMmZjMGE3MTk1NDdlN2EyMWRiOTAKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWRh
dGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw2OSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJp
dmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhy
ZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0
YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBl
Lm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitm
dW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9
ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4j
ZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5l
KEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVs
ZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vRlRMKEMucHJvdG90
eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorCitsZXQgQyA9IGZhY3RvcnlDbGFz
cygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAg
Yy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgp
LCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3MoKTsKKworbGV0IGMyID0g
bmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICd0ZXN0Jyk7CitjMi5z
ZXRGaWVsZCgnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCksICdmb28nKTsK
KworbGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4gewor
ICAgIGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rlc3QnKTsKK30pOworCithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgKCkgPT4geworICAgIGMyLnNldEZpZWxkLmNhbGwoYywgJ3Rlc3QnKTsKK30pOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGlj
LXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFt
ZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZjNTM2
NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5
bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1
cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlm
IChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7Cisg
ICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBpZiAoaSAl
IDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgICAgIHJldHVybiAn
dGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAgICB0aGlzLiNmaWVsZCA9
IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVs
ZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Citub0lubGluZShD
LnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZU
TChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVlNWFjMjExODFiN2NiCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgewor
ICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgICNm
aWVsZCA9ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQg
PSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUo
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9G
VEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZp
ZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZpZXIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50LWlkZW50aWZp
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4OGJhNDE1ZGExNWZkMzcy
OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0
aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAo
YSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGNsYXNzRGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKyAg
ICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGluZShDLnByb3RvdHlwZS5z
ZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAgIG5vREZH
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFyYXRpb24pOworbGV0IEMx
ID0gY2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNsYXJhdGlvbigpOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IGkgJSAyID8gbmV3
IEMxIDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409441</attachid>
            <date>2020-09-22 19:24:38 -0700</date>
            <delta_ts>2020-09-22 22:31:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200922232431.patch</filename>
            <type>text/plain</type>
            <size>174190</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2FmMDRhZDM3ZWNlYWI4ZTNlNzY3MmEyOTJmZjdiMGE3M2I0NTJlLi41MTIxZGRmMTk1MGRhY2Rl
ZTgxZjVkODcyOWI0Y2E4YjYyMDgxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODIgQEAKKzIwMjAtMDktMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2Ug
U3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgbmV3IG9wY29kZSB0byBo
YW5kbGUgcHJpdmF0ZSBmaWVsZCBzdG9yYWdlLgorICAgICAgICBCZWZvcmUgdGhpcyBjaGFuZ2Us
IHdlIHdlcmUgdXNpbmcgYHB1dF9ieV92YWxfZGlyZWN0YCBhbmQgaW5jbHVkaW5nCisgICAgICAg
IHRoZSBpbmZvcm1hdGlvbiBvZiBgUHV0S2luZGAgaW50byBgUHV0QnlWYWxGbGFnc2AuIFdlIGlu
aXRpYWxseSBkZWNpZGVkCisgICAgICAgIHRvIHVzZSBgcHV0X2J5X3ZhbF9kaXJlY3RgIHRvIHRh
a2UgYWR2YW50YWdlIG9mIGFsbCBJQyBtZWNoYW5pc20gYWxyZWFkeQorICAgICAgICBpbXBsZW1l
bnRlZCBmb3IgdGhpcyBpbnN0cnVjdGlvbiwgaG93ZXZlciB0aGUgc2VtYW50aWNzIG9mIHByaXZh
dGUgZmllbGQKKyAgICAgICAgaXMgZGlmZmVyZW50IGVub3VnaCB0byBjb21wbGljYXRlIHRoZSB1
bmRlcnN0YW5kaW5nIG9mCisgICAgICAgIGBwdXRfYnlfdmFsX2RpcmVjdGAuCisKKyAgICAgICAg
VGhlIG5ldyBpbnN0cnVjdGlvbiBpcyBjYWxsZWQgYHB1dF9wcml2YXRlX25hbWVgIGFuZCBoYXMg
YXMgaXRzIG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgc3VwcG9ydCBvZiBJQyBmb3IgYWxs
IHRpZXJzLiBGb3IgREZHIGFuZCBGVEwsIHdlCisgICAgICAgIGFyZSBvbmx5IGVtbWl0aW5nIElD
IHdoZW4gd2UgYXJlIGFibGUgdG8gZW1pdCBgQ2hlY2tDb25zdGFudGAKKyAgICAgICAgZm9yIHN1
YnNjcmlwdCBpZGVudGlmaWVyIGR1cmluZyBCeXRlY29kZSBwYXJzaW5nLiBXZSBhcmUgYWRkaW5n
IGEgbmV3CisgICAgICAgIERGRyBub2RlIGNhbGxlZCBgUHV0UHJpdmF0ZU5hbWVCeUlkYCB0aGF0
IGhhbmRsZXMgc3VjaCBjYXNlcyB3aGVuIHdlCisgICAgICAgIGhhdmUgY29uc3RhbnQgaWRlbnRp
ZmllcnMuCisgICAgICAgIFdlIGFyZSBhbHNvIGFkZGluZyBhIG5ldyBERkcgbm9kZSBgUHV0UHJp
dmF0ZU5hbWVgIHRoYXQgaGFuZGxlcyBnZW5lcmljCisgICAgICAgIGNhc2Ugb2YgYHB1dF9wcml2
YXRlX25hbWVgLiBUaGUgc3RyYXRlZ3kgdXNlZCB0byBjb21waWxlCisgICAgICAgIGBwdXRfcHJp
dmF0ZV9uYW1lYCBpcyB2ZXJ5IHNpbWlsYXIgd2l0aCB3aGF0IHdlIGFyZSB1c2luZyB3aXRoCisg
ICAgICAgIGBwdXRfYnlfdmFsW19kaXJlY3RdYC4gV2UgZmlyc3QgdHJ5IHRvIGNvbXBpbGUgaXQg
YXMgYFtNdWx0aV1QdXRCeU9mZnNldGAKKyAgICAgICAgdXNpbmcgcHJvZmlsZWQgaW5mb3JtYXRp
b24gZnJvbSBMTEludCBhbmQgQmFzZWxpbmUgZXhlY3V0aW9uLiBJZiBpdAorICAgICAgICBpcyBu
b3QgcG9zc2libGUsIHdlIHRoZW4gZW1pdCBgUHV0UHJpdmF0ZU5hbWVbQnlJZF1gIG5vZGUuIFdl
IGdldCBhbm90aGVyCisgICAgICAgIGNoYW5jZSB0byB0cmFuc2Zvcm0gYFB1dFByaXZhdGVOYW1l
QnlJZGAgaW50byBgUHV0QnlPZmZzZXRgIGlmIHdlIGNhbiBwcm92ZQorICAgICAgICBpdHMgc3Ry
dWN0dXJlIHNldCBhdCBjb25zdGFudCBmb2xkaW5nIHBoYXNlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5
dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChK
U0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojp0cnlGb2xkQXNQdXRCeU9mZnNldCk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6
OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAg
KiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkJ5VmFsQ29tcGlsYXRpb25JbmZvOjpCeVZhbENv
bXBpbGF0aW9uSW5mbyk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24p
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlPE9wUHV0UHJpdmF0
ZU5hbWU+KToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5
VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpzZXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRl
RmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQ
dXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRQdXRCeUlEKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5o
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRQcml2YXRlRmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5k
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVGaWVsZFB1dEtpbmQ6OnNldCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtp
bmQ6OmRlZmluZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzTm9uZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzU2V0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNEZWZpbmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OlByaXZhdGVGaWVsZFB1dEtpbmQpOgorCiAyMDIwLTA5
LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
RHJvcCBPcHRpb25zOjp1c2VCaWdJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA5MzE1OWFmYjg1ODRkODk0MGVkNWQ1YjNmMjdhMzQ0M2U4ZjA4ZDMyLi44MDBkZWY0YWE5
ZWMyNjk3YTUwNDFiODBkZjA4ZTcxMDg2MjM1MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDcsNyArNTQ3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUv
UHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAg
IGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAg
LTk3MSw2ICs5NzAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25zTGlzdC5oCiAg
ICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgK
ICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM4NDIwNmU3Y2FmZTNkZjhiZjhhMjk3MzFkOTAzNTNjNDRkYTA5YjguLmYz
YmZhZTE5YjE4MmNiNTI3NGJlNjEyMTkyZDg1MzYwNmIzYzBlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBG
QUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8q
IEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0
RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
NjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZG
RkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFE
RDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0
ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERF
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDE1NCw4
ICs0MTU0LDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFy
ci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQ
YXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc1LDYgKzQxNzMsOCBA
QAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQ
cm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZmls
ZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjZBMTREMzVE
NTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzYzMCw2ICs3NjMwLDggQEAKIAkJCQkzN0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJ
bnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVD
cmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggKi8sCisJCQkJODZCODY5MDIy
NEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwICovLAorCQkJCTg2Qjg2
OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8sCiAJCQkJODY4
OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYx
REMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFE
MzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKQEAgLTg1MDEsOCAr
ODUwMyw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMu
aCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3Bw
ICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICov
LAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywK
LQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJ
CTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQy
MEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FB
MjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC0xMDIzOSw2ICsx
MDIzOSw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQjgxREVGM0FB
RTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJv
YmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3OSw3ICsxMDI4MCw2IEBACiAJCQkJMEYx
NUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1
MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0
Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAppbmRleCA2ZjhlMjcxOTcyMTM1NTUxMjM4YTdiODQ3MTFhMTU2NzUwOWMzMzQw
Li5jNWUyYTY2YmM3MjFlMTA1MDNmMTU1ZWY2NjE1NmQwYTkwZGQzYTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNl
V2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTQ0LDYgKzk0
Myw3IEBAIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNw
cAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKIHJ1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0Mzc2YjIwYjYz
MjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNlOWMyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00
NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywKICAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQdXRLaW5kLAog
ICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCiAgICAg
OlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5cGUsCiAg
ICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0LDIwIEBAIG9w
IDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2Vs
bF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAg
IGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0S2luZDogUHJp
dmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0
cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltK
U0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdTdHJ1Y3R1cmVJ
RDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBAQCBvcCA6cHV0
X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
cHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFNb2RlOiBFQ01B
TW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5NzZiMjJjZWI4
Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMjcs
NiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxS
ZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRv
ckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBi
YXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5
KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQogICAg
IFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFz
SW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNlIG9w
X3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9w
X3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAg
Y2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggODRmMzI3MGMyOTgyOGQ0NmFmZDIxNmZlMzIzYTAzNmFhYTQ4NzA2Yy4uZmYyYWRl
Y2ZmMjVjZjUxNTkyOTRjNWFhMmRkMDFmNDhiNjc5NWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAgICAgTElOSyhP
cFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAgICAgIExJTkso
T3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJ
TksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90
VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3Ry
dWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChu
ZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1
cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5Lmdl
dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAg
aWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPQorICAgICAg
ICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJl
SUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0KKyAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlE
KTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQor
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVy
ZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMwMiw2ICsxMzIy
LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgfSk7CiAK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICBKU0NlbGwq
IHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgIGlmICgo
IW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYgKCFwcm9wZXJ0
eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAmJiAoIW5l
d1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJ
bnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJmNmI4YTBhYWUz
Li5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1OCw0
NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywg
c2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+
Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5k
IGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0cmljdAotICAg
IC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAotICAg
IC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5v
bmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNE
aXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAy
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sg
PSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRT
aGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdldFR5cGUgY29u
dmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAgICBhdXRvIGlz
U3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgp
KTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAgcmV0dXJuIChw
cml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8
IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBhdXRvIGlzRGly
ZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0gICAgICAgIGF1
dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKLSAg
ICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigo
Z3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nl
c3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3Mg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBpc0RpcmVjdCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpj
cmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1v
ZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsK
LSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1
Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0IEBAIHN0cnVj
dCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKICAg
ICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQcml2YXRl
RmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1
c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNr
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNl
OjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBC
YXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6
OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQ
dXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAppbmRleCA0ZjM5NGYwMWQwNWIzMGY0ODU5ZDVhNDUyYTU3N2M0ZDJl
YzUxZjhhLi44YmMxN2M4NjQ2YmM3MGJkYmU0ZmJlZjlhNjk3YzhjOWZiNTg2YjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC00
OCw2ICs0OCwxMiBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZQogICAgIFZNJiB2bSA9IHByb2Zp
bGVkQmxvY2stPnZtKCk7CiAgICAgCiAgICAgYXV0byBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxv
Y2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpOworCisgICAgLy8g
V2UgYXJlIG5vdCB5ZXQgdXNpbmcgYGNvbXB1dGVGcm9tTExJbnRgIGluIGFueSBwbGFjZSBmb3Ig
YHB1dF9wcml2YXRlX25hbWVgLgorICAgIC8vIFdlIGNhbiBhZGQgc3VwcG9ydCBmb3IgaXQgaWYg
dGhpcyBpcyByZXF1aXJlZCBpbiBmdXR1cmUgY2hhbmdlcywgc2luY2Ugd2UgaGF2ZQorICAgIC8v
IElDIGltcGxlbWVudGVkIGZvciB0aGlzIG9wZXJhdGlvbiBvbiBMTEludC4KKyAgICBBU1NFUlQo
IWluc3RydWN0aW9uLT5pczxPcFB1dFByaXZhdGVOYW1lPigpKTsKKwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7CiAKQEAgLTI3MSw3ICsyNzcsNyBAQCBQ
dXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGlu
ZUJsb2NrLCBJQ1N0YXR1c01hcCYgYgogICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2VsaW5lQmxv
Y2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0
ZURhdGEpOwogfQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QsIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKIHsKICAgICBpZiAocGFyc2VJ
bmRleCgqdWlkKSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CkBAIC0yOTQsNiArMzAwLDEyIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1CiAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpIHsKKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGhhdmUgYSB2YWxp
ZCBvZmZzZXQgZm9yIHN0cnVjdHVyZXMgb24gYFB1dFByaXZhdGVOYW1lQnlJZGAgZGVmaW5lIG1v
ZGUKKyAgICAgICAgICAgIC8vIHNpbmNlIGl0IG1lYW5zIHdlIGFyZSByZWRlZmluaW5nIGEgcHJp
dmF0ZSBmaWVsZC4gSW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvIHRha2UgCisgICAgICAgICAgICAv
LyBzbG93IHBhdGggdG8gdGhyb3cgZXhjZXB0aW9uLgorICAgICAgICAgICAgaWYgKHByaXZhdGVG
aWVsZFB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMpOwogCkBAIC0zMTYsNyArMzI4LDE0IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTdHJ1CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
IAorCisgICAgICAgIC8vIFdlIGNhbiBoYXZlIGEgY2FzZSB3aXRoIFB1dFByaXZhdGVOYW1lQnlJ
ZCBpbiBzZXQgbW9kZSBhbmQgaXQKKyAgICAgICAgLy8gc2hvdWxkIG5ldmVyIGNhdXNlIGEgc3Ry
dWN0dXJlIHRyYW5zaXRpb24gYmVjYXVzZSBpdCBtZWFucyB3ZSBhcmUKKyAgICAgICAgLy8gdHJ5
aW5nIHRvIHN0b3JlIGluIGEgbm90IGluc3RhbGxlZCBwcml2YXRlIGZpZWxkLiBXZSBuZWVkIHRv
IHRha2UKKyAgICAgICAgLy8gc2xvdyBwYXRoIHRvIHRocm93IGV4Y3BldGlvbiBpZiBpdCBldmVy
IGdldHMgZXhlY3V0ZWQuCisgICAgICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzU2V0KCkp
CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKwogICAg
ICAgICAvLyBPdXIgaHlwb3RoZXNpcyBpcyB0aGF0IHdlJ3JlIGRvaW5nIGEgdHJhbnNpdGlvbi4g
QmVmb3JlIHdlIHByb3ZlIHRoYXQgdGhpcyBpcyByZWFsbHkKICAgICAgICAgLy8gdHJ1ZSwgd2Ug
d2FudCB0byBkbyBzb21lIHNhbml0eSBjaGVja3MuCiAgICAgCkBAIC0zMzEsNiArMzUwLDcgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cnUKICAgICAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICBpZiAoIWlzRGlyZWN0KSB7CisgICAgICAg
ICAgICBBU1NFUlQocHJpdmF0ZUZpZWxkUHV0S2luZC5pc05vbmUoKSk7CiAgICAgICAgICAgICBj
b25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25j
dXJyZW50bHkoCiAgICAgICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB1
aWQpOwogICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKaW5kZXggNGRkZmZiYjg4
YzgwMzcxZjg2ODNlNTczZjJiZmVjZDczOTE3ZmRhOS4uZjg3MmQ0Y2UyZjYxY2NjZjM5Y2M4ZmM0
M2Q4MzM3MDljOTNlYjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0
dXMuaCIKICNpbmNsdWRlICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisj
aW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50
LmgiCiAjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCiAKQEAgLTk0LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgRXhpdEZsYWcsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEpOwotICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKKyAgICBzdGF0
aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0
dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCwgUHJpdmF0ZUZp
ZWxkUHV0S2luZCk7CiAgICAgCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0
dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlOTBmZDA3ZDBkMzcx
MzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
LQotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQotewotICAgIENvbW1hUHJpbnRlciBjb21t
YSgifCIpOwotICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQotICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJEaXJlY3QiKTsKLSAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRQdXQoKSkKLSAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1dCIpOwotICAgIGlmIChmbGFncy5p
c1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmll
bGQrQWRkIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDk4YWRmMmQxYjM2YzYxY2UzMDJiZjljMjM4MjU2YTcwNTY4NzY2N2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFQ01B
TW9kZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWVudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA6IHVpbnQ4X3QgewotICAgIE5v
bmUsCi0gICAgUHV0LAotICAgIENyZWF0ZSwKLX07Ci0KLWNsYXNzIFB1dEJ5VmFsRmxhZ3Mgewot
cHVibGljOgotICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGUoRUNNQU1v
ZGUgZWNtYU1vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhmYWxzZSwg
ZWNtYU1vZGUpOwotICAgIH0KLQotICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFucyB0aGF0
IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQotICAgIC8vIHBy
b3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKLSAgICB9Ci0KLSAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKEVDTUFNb2Rl
IGVjbWFNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7Ci0gICAgfQotCi0gICAgY29uc3RleHBy
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21h
TW9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOwotICAgIH0KLQotICAgIGJvb2wgaXNEaXJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2VjbWFNb2RlOyB9Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kOyB9Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOyB9
Ci0gICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQ7IH0KLSAgICBib29s
IGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZTsgfQotCi1wcml2YXRlOgotCi0g
ICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCi0gICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKLSAgICAgICAgLCBtX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKLSAgICAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgUHV0QnlW
YWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2VzcywgRUNNQU1vZGUgZWNtYU1vZGUp
Ci0gICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQotICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZChhY2Nlc3MpCi0gICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBtX2lzRGlyZWN0OwotICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOwotICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50U3Ry
ZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxh
Z3MpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0S2luZC5oCmluZGV4IGY5MGQ1MjlkMmFlYmIzY2Q5NWM4YjQ1N2I2NDhiNWY3NGI4ZmIxM2Eu
LmQ2ZTM1YmM0ZTg4ZjAwNzVhMzMzNjliZmYxYzI3YTdjNjBmNjM2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZENyZWF0ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0IH07CitlbnVtIGNsYXNzIFB1dEtp
bmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lLCBEaXJlY3RQ
cml2YXRlRmllbGRTZXQgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDMzMjhmNmE0NmQ3N2RiNGRjZmEzYzg0ZDQyYmE2NzdiNWMzMDE3MjcuLmRkOWU3Zjc5ZjRl
ZmMxMjllODlhNzcyNzQwZTRhODg4NmU3MmE1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUg
IlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZEV2YWxDb2RlQmxv
Y2suaCIKQEAgLTI3MjYsNyArMjcyNyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAg
IE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRC
eVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkpOworICAgIE9wUHV0QnlWYWxEaXJl
Y3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3NTAsMTMgKzI3NTEsMTMgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVu
c2lnbmVkIGkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2
YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJv
cGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNt
YU1vZGUoKSkpOworICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpkZWZpbmUoKSk7CiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVs
ZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSgp
KSk7CisgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAppbmRleCBkOTAyZjIwNzJiNjE2MzZkYWFmY2NkZDZjNDM0ZTQxYTNi
MTUzZmVkLi42Yjg3N2VlM2I4YmU1ZWVkOWY1NjNkY2E1MDFhZWViZjNlMmM4YjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCkBAIC00MDI5LDE3ICs0MDI5LDI1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKworICAgIGNhc2UgUHV0UHJpdmF0ZU5h
bWU6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNl
IFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNEaXJlY3Qg
PSBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgfHwgbm9kZS0+b3AoKSA9PSBQdXRQcml2YXRl
TmFtZUJ5SWQ7CisgICAgICAgICAgICBhdXRvIHByaXZhdGVGaWVsZFB1dEtpbmQgPSBub2RlLT5v
cCgpID09IFB1dFByaXZhdGVOYW1lQnlJZCA/IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKSA6
IFByaXZhdGVGaWVsZFB1dEtpbmQ6Om5vbmUoKTsKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMg
c3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAg
ICAgIHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCksCiAgICAgICAgICAgICAgICAg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpLAotICAgICAgICAgICAgICAgIG5vZGUt
Pm9wKCkgPT0gUHV0QnlJZERpcmVjdCk7CisgICAgICAgICAgICAgICAgaXNEaXJlY3QsIHByaXZh
dGVGaWVsZFB1dEtpbmQpOwogCiAgICAgICAgICAgICBib29sIGFsbEdvb2QgPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDdmYmE1M2I1ZTc5N2ExNmFmMWI3
NGEzMjYyMWFkOTkwOTMxNDJmOTEuLmVlMzM3ZWIyZmE5M2EwZTBmZjM5ODY5ZTZiZTU5NmM0YjNh
MzFlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC03MCw5ICs3MCw5IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
LmgiCisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRG
bGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKLSNpbmNsdWRlICJQdXRCeVZhbEZs
YWdzLmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgpAQCAtMjUyLDYgKzI1Miw5
IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVz
JiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIEVD
TUFNb2RlKTsKIAorICAgIHZvaWQgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKAorICAgICAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsIFByaXZhdGVGaWVsZFB1dEtpbmQp
OworCiAgICAgdm9pZCBoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7CiAgICAgCkBAIC0xMjY3
LDE4ICsxMjcwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7
IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KLUVDTUFNb2RlIGVj
bWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2RlKQotewotICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFN
b2RlOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9w
UHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCi17Ci0gICAgcmV0dXJu
IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKTsKLX0KLQogQmFzaWNCbG9jayogQnl0ZUNvZGVQ
YXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCkKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC01MDE1LDYgKzUwMDYsMTMwIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfSB9CiB9CiAKK3ZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dFByaXZhdGVOYW1lQnlJZCgKKyAgICBOb2RlKiBiYXNl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIE5vZGUqIHZhbHVlLAorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMs
IFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKK3sKKyAgICBpZiAoIXB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIGlmICghcHV0QnlJZFN0
YXR1cy5pc1NldCgpKQorICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAg
ICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBP
cEluZm8ocHJpdmF0ZUZpZWxkUHV0S2luZCksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAocHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkg
eworICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1cy5t
YWtlc0NhbGxzKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAg
ICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIp
LCBPcEluZm8ocHJpdmF0ZUZpZWxkUHV0S2luZCksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3Jh
cGguY29tcGlsYXRpb24oKSkpCisgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0
QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQ
dXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7
CisgICAgCisgICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRC
eUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgOiB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgu
bV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFudHMgPSBw
dXRCeUlkU3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIg
PSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICBhZGRUb0dyYXBoKE11bHRpUHV0QnlPZmZzZXQs
IE9wSW5mbyhkYXRhKSwgYmFzZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIEFTU0VSVChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CisgICAgY29u
c3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBwdXRCeUlkU3RhdHVzWzBdOworICAgIAorICAg
IHN3aXRjaCAodmFyaWFudC5raW5kKCkpIHsKKyAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpSZXBs
YWNlOiB7CisgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzU2V0KCkpOworICAg
ICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxh
bi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigp
LCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgIAorICAgICAgICBzdG9yZShiYXNlLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CisgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb246IHsKKyAgICAgICAgQVNTRVJUKHByaXZh
dGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUoKSk7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0
QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRQ
dXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7
CisgICAgCisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAg
ICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJp
dmF0ZUZpZWxkUHV0S2luZCksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIAorICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwor
ICAgIAorICAgICAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgIFRyYW5zaXRpb24q
IHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAgbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24o
KSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwor
ICAgIAorICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkgeworICAgICAg
ICAgICAgLy8gSWYgd2UncmUgZ3Jvd2luZyB0aGUgcHJvcGVydHkgc3RvcmFnZSB0aGVuIGl0IG11
c3QgYmUgYmVjYXVzZSB3ZSdyZQorICAgICAgICAgICAgLy8gc3RvcmluZyBpbnRvIHRoZSBvdXQt
b2YtbGluZSBzdG9yYWdlLgorICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldCh2YXJp
YW50Lm9mZnNldCgpKSk7CisgICAgCisgICAgICAgICAgICBpZiAoIXZhcmlhbnQub2xkU3RydWN0
dXJlRm9yVHJhbnNpdGlvbigpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAg
ICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3Jh
cGgoCisgICAgICAgICAgICAgICAgICAgIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5m
byh0cmFuc2l0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZSwgYWRkVG9HcmFwaChHZXRC
dXR0ZXJmbHksIGJhc2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKTsK
KyAgICAgICAgfQorICAgIAorICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3Jh
cGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+b2Zmc2V0ID0gdmFy
aWFudC5vZmZzZXQoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZp
ZXJOdW1iZXI7CisgICAgICAgIAorICAgICAgICAvLyBOT1RFOiBXZSBjb3VsZCBHQyBhdCB0aGlz
IHBvaW50IGJlY2F1c2Ugc29tZW9uZSBjb3VsZCBpbnNlcnQgYW4gb3BlcmF0aW9uIHRoYXQgR0Nz
LgorICAgICAgICAvLyBUaGF0J3MgZmluZSBiZWNhdXNlOgorICAgICAgICAvLyAtIFRoaW5ncyBh
bHJlYWR5IGluIHRoZSBzdHJ1Y3R1cmUgd2lsbCBnZXQgc2Nhbm5lZCBiZWNhdXNlIHdlIGhhdmVu
J3QgbWVzc2VkIHdpdGgKKyAgICAgICAgLy8gICB0aGUgb2JqZWN0IHlldC4KKyAgICAgICAgLy8g
LSBUaGUgdmFsdWUgd2UgYXJlIGZpeGluZyB0byBwdXQgaXMgZ29pbmcgdG8gYmUga2VwdCBsaXZl
IGJ5IE9TUiBleGl0IGhhbmRsaW5nLiBTbworICAgICAgICAvLyAgIGlmIHRoZSBHQyBkb2VzIGEg
Y29uc2VydmF0aXZlIHNjYW4gaGVyZSBpdCB3aWxsIHNlZSB0aGUgbmV3IHZhbHVlLgorICAgICAg
ICAKKyAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAorICAgICAg
ICAgICAgT3BJbmZvKGRhdGEpLAorICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAgICAg
ICAgICAgYmFzZSwKKyAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2
YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKQorICAgICAgICAgICAgYWRkVG9HcmFwaChOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5LCBiYXNlLCBwcm9wZXJ0eVN0b3JhZ2UpOworICAgIAor
ICAgICAgICAvLyBGSVhNRTogUHV0U3RydWN0dXJlIGdvZXMgbGFzdCB1bnRpbCB3ZSBmaXggZWl0
aGVyCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDI5MjEgb3IKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MjkyNC4KKyAgICAgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFu
c2l0aW9uKSwgYmFzZSk7CisgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBp
bGF0aW9uKCkpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxp
bmVkUHV0QnlJZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGRlZmF1bHQ6
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9IH0KK30KKwog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7CiAgICAgY2xlYXJD
YWNoZXMoKTsKQEAgLTYwNjQsNiArNjE3OSw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5
X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfcHJpdmF0
ZV9uYW1lOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dFByaXZhdGVOYW1lPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChi
eXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5t
X3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2wgdHJ5Q29tcGlsZUFzUHV0QnlPZmZzZXQgPSBmYWxz
ZTsKKworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1czsK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVN
YXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KCkpKS5i
eVZhbEluZm87CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlz
IG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxs
LgorICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRp
b24uIEZvciBgcHV0X3ByaXZhdGVfbmFtZWAsIHdlIG1pZ2h0IGhhdmUgc29tZSBpbmZvIGZyb20K
KyAgICAgICAgICAgICAgICAvLyBMTEludCBJQywgaW5jbHVkaW5nIGNhY2hlZCBjZWxsIHRoYXQg
d2UgY291bGQgdXNlIGlmIEJ5VmFsIGlzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjc3OQorICAgICAg
ICAgICAgICAgIGlmIChieVZhbEluZm8gCisgICAgICAgICAgICAgICAgICAgICYmIGJ5VmFsSW5m
by0+c3R1YkluZm8KKyAgICAgICAgICAgICAgICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25z
dGFudFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICB0cnlDb21waWxlQXNQdXRCeU9mZnNl
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBieVZhbEluZm8tPmNh
Y2hlZElkOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENl
bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlk
ZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZp
ZXJOdW1iZXJdOworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9n
cmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkp
OworCisgICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5
VmFsSW5mby0+c3R1YkluZm8sIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHJ5Q29tcGlsZUFzUHV0
QnlPZmZzZXQpCisgICAgICAgICAgICAgICAgaGFuZGxlUHV0UHJpdmF0ZU5hbWVCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBieXRl
Y29kZS5tX3B1dEtpbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5k
KSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X3ByaXZhdGVfbmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2RlZmluZV9k
YXRhX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcERlZmluZURhdGFQcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTc1MTgsNyArNzY3OSw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAg
ICBQdXRCeUlkU3RhdHVzIHN0YXR1czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQotICAgICAg
ICAgICAgICAgICAgICBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCB1aWQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdWlk
LCBmYWxzZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXMoUHV0QnlJZFN0
YXR1czo6VGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJp
YW50cygpICE9IDEKQEAgLTgyOTUsNyArODQ1Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAg
ICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29k
ZSkpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlm
aWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwg
Ynl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJ
ZCkgewpAQCAtODMwNiw3ICs4NDY3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRy
KTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9H
cmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9kZShieXRlY29kZSkpKTsK
KyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJl
Y3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29k
ZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFu
ZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQg
c3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAy
ZGU1NWFlZDI3YzFlYTM0NmY4ZDBjNWFjZDY0NjhkZWFjYmZlMzUwLi4xNmVhMjVkM2Q3ZGJjMWEx
MmYyOWNjNjdlMzNiMjY2ZGY0OTQ3ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTMsNiArMjkzLDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEkKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBvcF9z
dXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CisgICAgY2Fz
ZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGlu
ZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ug
d2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklU
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjZmUxZjgx
N2E1M2YyMDZkMjhmNzA3NTc5YzhjOWU0N2ZhYjhiZGI4Li5kOTU5YjAxZGUwYzFjMjFlMmZiNzhj
N2MyMGJkNjcwZmUxZmQ3YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgorICAgIGNhc2Ug
UHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CmluZGV4IDVlMmJkOWM5NWUwODJiMjgwM2NmYjlkOTAzYjk1NjI3M2Q4ZmUzMjkuLjA1OGRjYmZm
OWM2MDRjYjNlYzRiNmM4NTlmMTNjZTk5NThjMjhmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02NTgsMTAy
ICs2NTgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlk
OiB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQobm9kZSwgaW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEo
KSwgbm9kZS0+Y2hpbGQyKCksIGlzRGlyZWN0LCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCks
IGNoYW5nZWQsIGFscmVhZHlIYW5kbGVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQ
dXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKLSAgICAgICAg
ICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAg
ICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIE5vZGUq
IGNoaWxkID0gY2hpbGRFZGdlLm5vZGUoKTsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZEVkZ2UudXNlS2luZCgpID09IENl
bGxVc2UpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUg
YmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBBYnN0
cmFjdFZhbHVlIHZhbHVlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBQdXRCeUlkU3Rh
dHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAg
ICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLAotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCksCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgICAgICAgIEFTU0VSVChzdGF0dXMubnVtVmFyaWFudHMoKSk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxICYmICFtX2dyYXBoLm1fcGxh
bi5pc0ZUTCgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGJvb2wg
YWxsR29vZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBu
ZXdTZXQ7Ci0gICAgICAgICAgICAgICAgVHJhbnNpdGlvblZlY3RvciB0cmFuc2l0aW9uczsKLSAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVz
LnZhcmlhbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hDb25kaXRpb24oY29uZGl0aW9u
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZShtX2dyYXBoLm1fdm0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25k
aXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9y
aWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBjb25kaXRpb24ub2JqZWN0KCksIEtu
b3duQ2VsbFVzZSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFhbGxHb29kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFu
c2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5l
d1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVy
ZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5
SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5tZXJn
ZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
aWYgKCFhbGxHb29kKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
ICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVm
b3JlLgotICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZGlkRm9sZENsb2JiZXJXb3JsZCgp
OwotICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIub2JzZXJ2ZVRyYW5zaXRpb25zKGluZGV4
SW5CbG9jaywgdHJhbnNpdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENv
bnRyYWRpY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7Ci0KLSAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFs
bG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dy
YXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmln
aW4uc2VtYW50aWMsIHN0YXR1cykpLAotICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBl
bWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwg
aWRlbnRpZmllck51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fcGxhbi5pc0ZUTCgp
KTsKLQotICAgICAgICAgICAgICAgIE11bHRpUHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFkZCgpOwotICAgICAgICAgICAgICAgIGRhdGEtPnZh
cmlhbnRzID0gc3RhdHVzLnZhcmlhbnRzKCk7Ci0gICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRp
Zmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvTXVsdGlQdXRCeU9mZnNldChkYXRhKTsKKyAgICAgICAgICAgICAgICBib29sIGlzRGly
ZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0OworICAgICAgICAgICAgICAgIHRyeUZv
bGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hpbGQxKCksIG5vZGUt
PmNoaWxkMigpLCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpLCBjaGFuZ2Vk
LCBhbHJlYWR5SGFuZGxlZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKQEAgLTE0NzAsNiArMTM4NSw5NSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAg
IAorICAgIHZvaWQgdHJ5Rm9sZEFzUHV0QnlPZmZzZXQoTm9kZSogbm9kZSwgdW5zaWduZWQgaW5k
ZXhJbkJsb2NrLCBFZGdlIGJhc2VFZGdlLCBFZGdlIHZhbHVlRWRnZSwgYm9vbCBpc0RpcmVjdCwg
UHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kLCBib29sJiBjaGFuZ2VkLCBi
b29sJiBhbHJlYWR5SGFuZGxlZCkKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0g
bm9kZS0+b3JpZ2luOworICAgICAgICBOb2RlKiBiYXNlTm9kZSA9IGJhc2VFZGdlLm5vZGUoKTsK
KyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS51aWQoKTsKKworICAgICAgICBBU1NFUlQoYmFzZUVkZ2UudXNlS2luZCgpID09IENlbGxV
c2UpOworCisgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2Rl
KGJhc2VOb2RlKTsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZVZhbHVlID0gbV9zdGF0ZS5m
b3JOb2RlKHZhbHVlRWRnZSk7CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUu
aXNGaW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBQdXRCeUlkU3RhdHVz
IHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgYmFzZVZhbHVl
Lm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCksCisgICAgICAgICAgICBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkudWlkKCksCisgICAgICAgICAgICBpc0RpcmVjdCwgcHJpdmF0ZUZpZWxk
UHV0S2luZCk7CisKKyAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkpOworCisgICAg
ICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA+IDEgJiYgIW1fZ3JhcGgubV9wbGFuLmlzRlRM
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2hhbmdlZCA9IHRydWU7CisKKyAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25W
ZWN0b3IgdHJhbnNpdGlvbnM7CisgICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogdmFyaWFudC5jb25kaXRpb25TZXQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLndhdGNoQ29uZGl0aW9uKGNvbmRpdGlvbikp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZShtX2dyYXBoLm1f
dm0pOworICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxp
ZGl0eShzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwgbm9kZS0+b3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJl
KSksCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9y
VXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4s
IGNvbmRpdGlvbi5vYmplY3QoKSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlv
bikgeworICAgICAgICAgICAgICAgIEFTU0VSVChwcml2YXRlRmllbGRQdXRLaW5kLmlzTm9uZSgp
IHx8IHByaXZhdGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUoKSk7CisgICAgICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQuYWRk
KG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNOb25lKCkgfHwgcHJpdmF0ZUZp
ZWxkUHV0S2luZC5pc1NldCgpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UoKm1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVy
IHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAgICBtX2ludGVycHJldGVyLmRpZEZvbGRD
bG9iYmVyV29ybGQoKTsKKyAgICAgICAgbV9pbnRlcnByZXRlci5vYnNlcnZlVHJhbnNpdGlvbnMo
aW5kZXhJbkJsb2NrLCB0cmFuc2l0aW9ucyk7CisgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUo
YmFzZUVkZ2UpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rp
b24pCisgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworCisgICAgICAgIGFs
cmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQg
Zm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgIEVkZ2UoYmFzZU5vZGUpKTsKKworICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZSh1
aWQpOworICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSkgeworICAgICAgICAg
ICAgZW1pdFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNb
MF0sIGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9wbGFuLmlzRlRMKCkpOworCisgICAgICAgIE11bHRp
UHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFk
ZCgpOworICAgICAgICBkYXRhLT52YXJpYW50cyA9IHN0YXR1cy52YXJpYW50cygpOworICAgICAg
ICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgbm9k
ZS0+Y29udmVydFRvTXVsdGlQdXRCeU9mZnNldChkYXRhKTsKKyAgICB9CisKICAgICBJblBsYWNl
QWJzdHJhY3RTdGF0ZSBtX3N0YXRlOwogICAgIEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFi
c3RyYWN0U3RhdGU+IG1faW50ZXJwcmV0ZXI7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9u
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDE4Yjg4Mzk2
OWI2OTBmMTNmNmZmYmZiN2Q3NTZiYjNjYTIyMDhjNzkuLjdkZjNkMzVkNDI2MjhkY2QwOTRiYjVk
N2M5N2EwMTYxNjY0MzcwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTMyMSw2ICszMjEsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJ
ZDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6Cisg
ICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNl
IFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGI2YzBiYjhiYTk5MGZmZjM1YzAwM2M4
NjAxN2VlMDY3MzQxMGUwMzguLjVlYmE3ZDFmMmM2OGQwNGM5MWVlNjAxNDkxYTE3OGZjYTgwMTlh
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTkwNSwxMiArMTkwNSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorCisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVj
dHVyZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21p
c2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgICAgICBjYXNlIENyZWF0ZUFz
eW5jR2VuZXJhdG9yOgorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCdXR0ZXJmbHk6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGE1Y2RmMWFhNmYzZDJkOWIxZTg2ZWQ1YmQyMzE4YjYyZDZhYzhlZTkuLjA0ZTAy
NWFiMmYxMWJlMjg2NTZhNTliNTcxMjY1MGNmNTg3ZDNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNs
dWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIK
ICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpA
QCAtNjE1LDcgKzYxNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1B1dEJ5
T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlk
RGlyZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNl
dCk7CisgICAgICAgIEFTU0VSVChtX29wID09IFB1dEJ5SWQgfHwgbV9vcCA9PSBQdXRCeUlkRGly
ZWN0IHx8IG1fb3AgPT0gUHV0QnlJZEZsdXNoIHx8IG1fb3AgPT0gTXVsdGlQdXRCeU9mZnNldCB8
fCBtX29wID09IFB1dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7
CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMyhjaGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAg
IGNoaWxkcmVuLnNldENoaWxkMihiYXNlKTsKQEAgLTYyNSw3ICs2MjYsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zmc2V0KE11bHRpUHV0QnlPZmZzZXRE
YXRhKiBkYXRhKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gUHV0QnlJZCB8fCBtX29w
ID09IFB1dEJ5SWREaXJlY3QgfHwgbV9vcCA9PSBQdXRCeUlkRmx1c2gpOworICAgICAgICBBU1NF
UlQobV9vcCA9PSBQdXRCeUlkIHx8IG1fb3AgPT0gUHV0QnlJZERpcmVjdCB8fCBtX29wID09IFB1
dEJ5SWRGbHVzaCB8fCBtX29wID09IFB1dFByaXZhdGVOYW1lQnlJZCk7CiAgICAgICAgIG1fb3BJ
bmZvID0gZGF0YTsKICAgICAgICAgbV9vcCA9IE11bHRpUHV0QnlPZmZzZXQ7CiAgICAgfQpAQCAt
MTA4Nyw2ICsxMDg4LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAg
ICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoK
KyAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyODMs
NiArMjI4NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgYm9vbCBo
YXNQcml2YXRlRmllbGRQdXRLaW5kKCkKKyAgICB7CisgICAgICAgIGlmIChvcCgpID09IFB1dFBy
aXZhdGVOYW1lIHx8IG9wKCkgPT0gUHV0UHJpdmF0ZU5hbWVCeUlkKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcml2YXRlRmll
bGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhh
c1ByaXZhdGVGaWVsZFB1dEtpbmQoKSk7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisgICAgfQorCiAgICAgYm9v
bCBoYXNBcml0aE1vZGUoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNjk2MjE5YzhkZjExZDMzNmRjNzBm
OWE0ZmE4MGQ4Yjg1MzQyOGIwYS4uZGE4N2QzZjFjMmZhYjYwZGNhMmYxZWJhOGU2OGNjZGRlMDYz
NzUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjEwLDYg
KzIxMCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRC
eVZhbERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1h
Y3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAor
ICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
UHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0
QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
aW5kZXggMGU0YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOS4uNDMzNTI2NTli
MmFlMGFjMzU5N2Q5ZDVkYTg4OTBlZTk4YTg0NDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJI
ZWFwQ2VsbC5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ4LDYgKzQ5LDcg
QEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92
YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9k
ZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhQ
cml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsg
fQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOWQzZjg5ZTY2ZWFlNjhjNmNkMTU0M2M3N2M1
N2Y1OTBkOTc4NzQ3OC4uZmYzNjI4NDAyMTlhYjQyY2E3MDc1N2NkOWU1ZGNhZDlkNmUyZGJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzNzgsNiArMTM3OCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6
CisgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgICAgICBjYXNlIFB1dENsb3N1
cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICAgICAgY2FzZSBQdXRU
b0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggYjA3Y2JhNzBmZTE5YzQxMGYyZWQ1YTQwNzZkODQ2YTI3ZDFmMWNmNS4uOTE3ZGUw
MmZlNmJlMjhiYzNjODc2OTJkYjBhNTdmYzllODQyNzQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNl
IFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKKyAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIERlZmlu
ZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2Fz
ZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggZTMwZDY2ZTA4MTlmYzE0MTNlNmZjZDRhNjJiYzFkZTVlZDE1NWFjMC4u
OGFkNGZmOGY2YWE4OGNiYWVmZTg0YmEyZDFhOWYzMDNkNzBhMmZlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM1MjQsNiArMzUy
NCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2Rl
KiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQoreworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKKworICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHlW
YWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgcHJvcGVy
dHlHUFIpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShw
cm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZElt
bTMyKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOworCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworCisgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVj
ayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKKyAgICAvLyB0byBjaGVj
ayBpdCBoZXJlLgorICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQo
KS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0S2lu
ZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKworICAgIG5vUmVz
dWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMjcyNCw3ICsxMjc2Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hH
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2Rl
LT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAgICAg
bm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjczOSw3ICsxMjc3Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkp
OwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjc1NCw3ICsxMjc5Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDM5Niw3ICsxNDQzNCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5k
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNt
YU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMWI2
MzIxN2UzNmM3MWViMWVmMGEzNmQ4OTJjMGU2MWQyMGZlM2U1Mi4uZjA4ZGZlNzYyNzJhYjQ0ODUy
YmU0MGQxZmRjY2VkNzJkMzg4MjBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM2MCw2ICsxMzYwLDggQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSosIEVkZ2UmIGNoaWxkMSwg
RWRnZSYgY2hpbGQyLCBFZGdlJiBjaGlsZDMpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2woTm9kZSosIEVkZ2UmIGNoaWxkMSwgRWRnZSYgY2hpbGQyLCBFZGdlJiBj
aGlsZDMpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRQcml2
YXRlTmFtZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5T2Zmc2V0KE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVQdXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTWF0
Y2hTdHJ1Y3R1cmUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOTc0ZTdhOTZhOGFhMmVkMjcwODEyNWFm
NGUwYTFjMzY4ZjhmNGQ1YS4uNjA5NTMxYjhmNTY0YjlkOWFjODZmYThmYWU4ZTMzMGZkZDAwMmVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0yNTkwLDYgKzI1OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAg
ICAgICAgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAg
IGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMDM5MzA3ZjEyZDlmNTUwMWNmYjYzYTNjM2Qy
M2YxMTJjNjM1ZDk1My4uYzMyMzkzODYwMjI1MTdiZTllNGIzNTBlZTdmYjNhZTliYmYzMGU2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0yOTQ4LDYgKzI5NDgsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dFByaXZhdGVO
YW1lOiB7CisgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZShub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAgY29t
cGlsZVB1dFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0
QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCAwNzE1M2I4ZTQ3MTJmNjgy
OWI2ZWJjNjMyMTc0NjZmODNkNDZjMWM0Li43MGU3ODM5OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkx
MmQ4ZDM5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjY2LDYgKzI2NiwxMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBlbWl0IElDIGNvZGUgd2hlbiB3ZSBoYXZlIGEgbm9uLW51bGwgY2FjaGVh
YmxlSWRlbnRpZmllciBhbmQgd2UgbmVlZCB0byBpbnRyb2R1Y2UgYQorICAgICAgICAgICAgICAg
IC8vIGJhcnJpZXIgZm9yIGl0LiBPbiBQdXRQcml2YXRlTmFtZSwgd2UgcGVyZm9ybSBzdG9yZSBi
YXJyaWVyIGR1cmluZyBzbG93IHBhdGggZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgIGNvbnNp
ZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2Fz
ZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYzgwYjE2ODQ0
YWFiYWNkODU2Njk2ZDg0NWY4MWMzYzZmOTc3Mzk3YS4uYjZhODJjNzFkNDRlOTQ3Y2UyOWQyZTI3
OWIwYzAzNjhmZGZhYzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMzk0LDYgKzM5NCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICBjYXNlIFB1
dFByaXZhdGVOYW1lOgorICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgTWF0
Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IGFjYTllNDRiZGFhODQ0OTg4NDQxYTlkNzk3YTFkYzY5OGVlZDc5MGIu
Ljg3ZDkzOTU4YTUyMTJlNmU5YzQzMTQwOWU1OTI4NGRiNjgxZWJkOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMTcsNiArMTAxNywx
MiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICBjb21waWxlUHV0UHJpdmF0ZU5hbWUo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoK
KyAgICAgICAgICAgIGNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoK
ICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hhbmdlOgpAQCAtMzk0NSw2ICszOTUxLDMy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29t
cGlsZVB1dFByaXZhdGVOYW1lQnlJZCgpCisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmlu
ZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAvLyB0byBjaGVjayBp
dCBoZXJlLgorICAgICAgICBhdXRvIHB1dEtpbmQgPSBtX25vZGUtPnByaXZhdGVGaWVsZFB1dEtp
bmQoKS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0
S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OworICAgICAgICBjYWNoZWRQdXRCeUlkKG1fbm9k
ZSwgYmFzZSwgdmFsdWUsIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHV0S2luZCk7CisgICAgfQorCisg
ICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2Us
IG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKwor
ICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLAorICAg
ICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
LCBtX291dC5jb25zdEludFB0cigwKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnByaXZhdGVG
aWVsZFB1dEtpbmQoKS52YWx1ZSgpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQXRvbWlj
c1JlYWRNb2RpZnlXcml0ZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAt
NDE5MSwxNCArNDIyMywxMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IHZvaWQgY29tcGlsZVB1dEJ5SWQoKQorICAgIHZvaWQgY2FjaGVkUHV0QnlJZChOb2RlKiBub2Rl
LCBMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBw
dXRLaW5kKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKTsKLQotICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0NlbGwobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpOworICAgICAgICBBU1NFUlQoaWRl
bnRpZmllcik7CiAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQu
cGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVy
KGJhc2UpOwpAQCAtNDIxNCw3ICs0MjQyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSog
c3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5l
Y21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQyMzMsNyArNDI2MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0
Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC00MjYx
LDYgKzQyODgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisKKyAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/
IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdDsKKyAgICAgICAgY2FjaGVkUHV0
QnlJZChub2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCBkOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZj
N2M3NWNjY2EyMDU5ZjE1Li43MzE3MTAwOTZjZjNlMjQ5OGFlNDVkZGEyNmFhODJlNzljZDQ2YTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTM5LDkgKzEzOSw5
IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJh
dGlvbk1vZGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByaXZh
dGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRv
VGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCA3NjI1MjAxOTc4YTJlNmE4OWEzZWE0MTI4ZjY0MDc2Mzc5NTZlODIyLi45YWQyZjNi
ZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYyM2ZkZmQ3ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQor
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkBAIC01
ODcsNiArNTg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikK
QEAgLTkwMiw3ICs5MDQsMTIgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAg
ICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPigpOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1Nl
dCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihw
YXRjaGFibGVOb3RJbmRleEp1bXApKTsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKKwor
ICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOworICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIGlmIChK
dW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGJhZFR5
cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVK
dW1wKSk7CisKICAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwogICAgICAgICAgICAgYXV0byBu
ZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbklu
Zm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJnZXQg
PSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFyZ2V0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1MDhhZjUwZjYxZWIzMTZmZTMzMzlhOTdk
NTBlYzU0YjE5NTZjNzk3Li5iNDViZTNhZDUwMjc5MTUwYjc5MjQzYTA0ZmZiZWMxMWY5MzFmOTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKICAgICBzdHJ1Y3QgT3BQdXRCeVZhbERpcmVj
dDsKKyAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQdXRUb1Njb3Bl
OwogCiAgICAgc3RydWN0IENhbGxSZWNvcmQgewpAQCAtMTYxLDYgKzE2MiwxNSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgQnlWYWxDb21waWxhdGlv
bkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFy
Z2V0KQorICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQorICAgICAgICAgICAgLCBi
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAsIG5vdEluZGV4SnVtcChu
b3RJbmRleEp1bXApCisgICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdldCkKKyAgICAg
ICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCisgICAgICAgIHsK
KyAgICAgICAgfQorCiAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwogICAgICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG5vdEluZGV4SnVtcDsKQEAgLTIzNCw2ICsyNDQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcD4o
YnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB9CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hl
ZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwor
ICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hl
ZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgfQor
CiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1OSw2ICsyNzYsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAorICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiwgUmV0dXJu
QWRkcmVzc1B0ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisKICAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBK
SVRBcnJheU1vZGUpOwogCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5
TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CkBAIC00MDYsMTEgKzQyNSwx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHRoZSB0eXBlIG9m
IHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRB
Y2Nlc3NLaW5kKE9wKTsKKyAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQ
dXRLaW5kKE9wKTsKIAogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0
QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVj
ayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBl
bWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcyk7CisK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIApAQCAtNjA1
LDYgKzYyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cCA9IE9wUHV0QnlWYWw+CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRl
cl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY4Niw2ICs3MDgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19pbmRleGVkX3By
b3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCmluZGV4IGFlNjFkOTE4NWZlYzc1YmVlZWVhMWRjNDNiYjZhNDcxZjJi
ZDdjZTcuLjk1ZTU5ODJkYmQxMjFkOGFmMzJmMjUxNmZiNjIwMGI2MDVhYjZkOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJZEdlbmVy
YXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2Rl
IGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5k
KQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQot
ICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5k
KQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBA
IC0xNTEsMjIgKzE1MCwyMiBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKLSAgICAg
ICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOwotICAgICAgICBBU1NFUlQobV9lY21hTW9k
ZS5pc1N0cmljdCgpKTsKLSAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgIH0K
LQotICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKLSAgICAgICAgaWYgKG1fcHV0S2lu
ZCA9PSBEaXJlY3QpCisgICAgc3dpdGNoIChtX3B1dEtpbmQpIHsKKyAgICBjYXNlIFB1dEtpbmQ6
Ok5vdERpcmVjdDoKKyAgICAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CisgICAgY2FzZSBQdXRLaW5kOjpE
aXJlY3Q6CisgICAgICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAobV9wdXRL
aW5kID09IERpcmVjdCkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3RPcHRpbWl6ZTsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplOworICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lOgorICAgICAg
ICBBU1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgQVNTRVJUKG1fZWNtYU1vZGUuaXNT
dHJpY3QoKSk7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemU7CisgICAgfQogfQogCiBKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMjljMmQyZTZkMzI4ZGE5Y2Iz
NzYxMTVkOTkyZWEyYTJjNTBjNTk5NC4uODUzODM1YTM5MzU4NTI5MTI3ZGUyZjM5N2I0OTc5OTgy
NGUzNmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4u
aCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgot
I2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMxLDEyICsxMzAsMTEgQEAgY2xhc3MgSklUUHV0QnlJ
ZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3Qo
KSkKLSAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6Tm9uZSkKICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAot
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRL
aW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOworICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAK
ICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0
NSw3ICsxNDMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7
CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7Ci0gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IDJmNzZkYjAwNjkyMTE4YWY4NTJlNzA2Mjk1MDI3NDI5OTg1YWNm
YjIuLmQ4ZTVkYTEyYTMwY2M2Mjk5ZDEwYjMxMWYzZWRjODA1ZDRmYzU0OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC02OTksMjEgKzY5OSw5IEBAIEFMV0FZU19J
TkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKIH0K
IAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0
QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCitBTFdBWVNfSU5MSU5FIEVDTUFNb2Rl
IEpJVDo6ZWNtYU1vZGU8T3BQdXRQcml2YXRlTmFtZT4oT3BQdXRQcml2YXRlTmFtZSkKIHsKLSAg
ICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLVByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9w
KQotewotICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOwotfQotCi10ZW1w
bGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRl
RmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCi17
Ci0gICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworICAgIHJl
dHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNGY0NTI0ZGM3MmI0
ZDkxYjcyOWVhOTVlYzhkMjYwZWMxODU2NDJmNC4uYzM5MjVlOGEwOWY0NWJjNDRmMzNiODVjMTZm
OTE3ODk4ODkyZTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC02MDAsNyArNjAwLDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwg
Y29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoUHV0QnlJ
RChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKKworICAgICAgICByZXBhdGNoUHV0QnlJ
RChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgUHV0S2luZDo6Tm90RGlyZWN0KTsKIH0KIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQpAQCAtNjMyLDcgKzYzMyw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikpCi0gICAg
ICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN0
cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgICAg
ICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1
Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgUHV0S2luZDo6Tm90RGlyZWN0KTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQpAQCAtNjYzLDcgKzY2NCw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBp
ZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwg
aWRlbnRpZmllcikpCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywg
RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBQdXRL
aW5kOjpEaXJlY3QpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
CkBAIC02OTQsMTMgKzY5NSwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29k
ZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoUHV0QnlJRChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVy
LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNs
b3QsICpzdHViSW5mbywgUHV0S2luZDo6RGlyZWN0KTsKIH0KIAogfSAvLyBleHRlcm4gIkMiCiAK
IHVzaW5nIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwg
Q29kZUJsb2NrKiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmll
ciYpPjsKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgYmFzZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFs
dWUsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVG
aWVsZENhbGxiYWNrKCkpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHNldFByaXZhdGVGaWVs
ZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBjb25zdCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQ
dXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIApAQCAtNzEyLDcgKzcxMyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2
bSk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2Rl
QmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwotICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgYmFzZU9iamVjdC0+
c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgaWYgKGNhbGxiYWNr
KQpAQCAtNzcwLDExICs3NzEsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamUKICAgICAgICAg
QVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIp
KQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmll
ciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUp
OwogICAgIH0pOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtNzgzLDEw
ICs3ODQsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRl
RmllbGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogCi0gICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSk7Cisg
ICAgc2V0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBpZGVudGlmaWVyLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNzk4LDEzICs3OTksMTMgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKIAotICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbJl0o
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1
dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICBz
ZXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBp
ZGVudGlmaWVyLCB2YWx1ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5m
byh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CiAKICAgICAgICAg
QVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIp
KQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3RQcml2YXRlRmllbGRQdXQpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwg
cHV0U2xvdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQpOwogICAg
IH0pOwogfQogCkBAIC05NDcsNyArOTQ4LDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0
cnlQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAg
ICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CiAgICAgICAgICAgICBp
ZiAoYnlWYWxJbmZvLT5zZWVuKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2Fj
aGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpJVDo6
Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KHZtLCBjb2RlQmxvY2ssIGJ5
VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgTm90RGlyZWN0LCBieVZhbEluZm8tPmNhY2hlZElkKTsK
KyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQ
dXRCeVZhbD4odm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBQdXRLaW5k
OjpOb3REaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOwogICAgICAgICAgICAgICAgICAgICBv
cHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZDsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBn
ZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgpAQCAtMTAzNyw3ICsxMDM4LDcgQEAgc3RhdGlj
IE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91
dGluZSk7CiAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVydHlOYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlW
YWxEaXJlY3Q+KHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgRGlyZWN0
LCBieVZhbEluZm8tPmNhY2hlZElkKTsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxl
UHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4odm0sIGNvZGVCbG9jaywgYnlW
YWxJbmZvLCByZXR1cm5BZGRyZXNzLCBQdXRLaW5kOjpEaXJlY3QsIGJ5VmFsSW5mby0+Y2FjaGVk
SWQpOwogICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRp
b25SZXN1bHQ6Ok9wdGltaXplZDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgpA
QCAtMTExOSw2ICsxMTIwLDEwOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZGlyZWN0
UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZh
bHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1
YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAg
ICBPcHRpbWl6YXRpb25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVz
dWx0OjpOb3RPcHRpbWl6ZWQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7
CisgICAgICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7CisgICAgICAgIEFTU0VSVChj
YWxsRnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAhPSBCeXRlY29kZUluZGV4KDApKTsKKyAgICAgICAg
QVNTRVJUKCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKKyAgICAgICAgaWYgKGJ5VmFsSW5mby0+
c2VlbikgeworICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJv
cGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVX
aXRoQ2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOworICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5lcmlj
IHByb3BlcnR5IGFjY2VzcyBzaXRlLgorICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3Vs
dCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+
c2VlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAg
ICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVu
T25jZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNv
ZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRpbWl6ZWQgJiYg
b3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2UpIHsKKyAg
ICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEwIHRpbWVzIHdpdGhvdXQg
cGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKKyAgICAgICAgLy8gbmV2ZXIgbWFrZSB0aGF0IG1p
c3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZiBvcHBvcnR1bml0
eQorICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBwdXRfcHJpdmF0ZV9uYW1l
IG1heSBiZSBwb2x5bW9ycGhpYy4KKyAgICAgICAgLy8gV2UgY291bnQgdXAgc2xvd1BhdGhDb3Vu
dCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgorICAgICAgICBpZiAoKytieVZhbEluZm8t
PnNsb3dQYXRoQ291bnQgPj0gMTApCisgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBP
cHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKKyAgICB9CisKKyAgICBpZiAob3B0aW1pemF0aW9u
UmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CisgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgorICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7CisgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7
CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIAorICAgIC8vIFByaXZhdGUgZmll
bGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAg
Ly8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0
IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3Ry
aWN0TW9kZSk7CisgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVj
dC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKworLy8gV2UgbmVlZCB0
byBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmll
bGRQdXRLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBz
dWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVY
Q0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBj
bGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBp
biBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBh
dXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHByaXZhdGVGaWVsZFB1
dEtpbmQuaXNEZWZpbmUoKSkKKyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAg
ICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKKworCisgICAgaWYgKGJ5VmFsSW5mbykKKyAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKaW5kZXggNjVlNzEyNTk1NjgzMGE4ODNlODMzMzA3OTUzOWUyMDQ0MmMwNWQ5NC4uNjcwNTUx
MGQ5YTQ1ODFkZGIxMDc3MGQ3NDQwNjAxZjgzYjBjOWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklU
KQogCiAjaW5jbHVkZSAiSklUTWF0aElDRm9yd2FyZHMuaCIKKyNpbmNsdWRlICJQcml2YXRlRmll
bGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhSZXR1cm5UeXBlLmgiCiAjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4K
QEAgLTE5MSw5ICsxOTIsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHUKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVS
TkFMOwogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMmIyNzQxZWQxNzE5YTQ3
Mzg5MjhhMGYyYzYxYmUzZTJkZGQ0NzQzYS4uNmU2OGViNmViMDUzZjk5NDU1OTJiY2ZiZTg2M2Nl
N2QyNjM3ODVjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CisjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2Fs
bC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Njb3Bl
ZExhbWJkYS5oPgpAQCAtMzE2LDcgKzMxNyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUt
YmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9u
YWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6
ZS4KQEAgLTM0Niw3ICszNDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1v
ZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29k
ZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0zNjksNiArMzcw
LDQ3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXgrKzsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29k
ZUJsb2NrLT5hZGRCeVZhbEluZm8obV9ieXRlY29kZUluZGV4KTsKKworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHJlZ1QxKTsKKworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFi
bGVKdW1wKCk7CisgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIAorICAgIExhYmVs
IGRvbmUgPSBsYWJlbCgpOworICAgIAorICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5k
KEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0
aEptcCwgZG9uZSwgZG9uZSkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7CisgICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4
XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUu
bV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBMYWJlbCBzbG93
UGF0aCA9IGxhYmVsKCk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOworCisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIp
OworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtp
bmQudmFsdWUoKSkpOworCisgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKKyAgICBtX2J5VmFsQ29tcGls
YXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsK
KyAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJC
eUlkPigpOwpAQCAtNzAwLDcgKzc0Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKLSAgICAgICAgZGlyZWN0
ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7
CisgICAgICAgIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7
CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzU4LDcgKzE0MDAsNyBAQCBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5k
IHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3Bl
cnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNt
YU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0xMzc3LDYgKzE0MTksMTIg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAor
SklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChP
cFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKK3sKKyAgICBhdXRv
IHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAg
ICByZXR1cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBwcm9w
ZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRXcml0
ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7
CiAgICAgQVNTRVJUKG1vZGUgPT0gVW5jb25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2RlID09
IFNob3VsZEZpbHRlckJhc2UpOwpAQCAtMTQ2NiwxMCArMTUxNCw0MiBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWw8T3BQ
dXRCeVZhbD4oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5
VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lKQoreworICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUlu
ZGV4KS5wdHIoKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOworCisgICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1bXBM
aXN0IHNsb3dDYXNlczsKKworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1dFBy
aXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNlcywg
c2xvd0Nhc2VzKTsKKworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxvY2sp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRoVGFy
Z2V0KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25lVGFy
Z2V0KTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIHBhdGNo
QnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxl
cik7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9jYWxscykgeworICAgICAg
ICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxs
U2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAgICBnZW4uZmluYWxpemUocGF0
Y2hCdWZmZXIsIHBhdGNoQnVmZmVyKTsKKworICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBG
SU5BTElaRV9DT0RFX0ZPUl9TVFVCKAorICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIs
IEpJVFN0dWJSb3V0aW5lUHRyVGFnLAorICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFt
ZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIGJ5VmFsSW5mby0+
c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxOb1B0clRhZz4o
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlW
YWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSkKIHsKLSAgICBBU1NFUlQoKHB1dEtpbmQgPT0gRGlyZWN0ICYmIE9wOjpvcGNvZGVJRCA9
PSBvcF9wdXRfYnlfdmFsX2RpcmVjdCkgfHwgKHB1dEtpbmQgPT0gTm90RGlyZWN0ICYmIE9wOjpv
cGNvZGVJRCA9PSBvcF9wdXRfYnlfdmFsKSk7CisgICAgQVNTRVJUKChwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdCAmJiBPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpIHx8IChw
dXRLaW5kID09IFB1dEtpbmQ6Ok5vdERpcmVjdCAmJiBPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5
X3ZhbCkpOwogICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIo
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKIApA
QCAtMTQ5MywxMSArMTU3MywxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdp
dGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogCiAgICAgYnlW
YWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1f
Y29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIg
Zm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9kaXJlY3Qi
IDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAiQmFzZWxp
bmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAl
cywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGly
ZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKICAgICBieVZhbElu
Zm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CiB9CiAvLyBU
aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVu
aXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0
ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA3Y2ZkZDZjMjY1MTUz
MTNiMmFmMzA4MWViMGY1YzFlYTRjMzA1NzQ4Li40ZjYzNzI3MzEzMDc5YzM0MjgwNzViZjMwMmUw
M2JmY2VkMGU4M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTMzMSw2ICszMzEsNTAgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmUKIH0KIAogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZv
ID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworCisgICAgZW1p
dExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CisKKyAg
ICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgIGFkZFNs
b3dDYXNlKGZhc3RQYXRoSm1wKTsKKworICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOworICAgIAor
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5
VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgQnlW
YWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5ieVZhbEluZm87CisgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0g
Ynl0ZWNvZGUubV9wdXRLaW5kOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBM
YWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdU
MSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOwor
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOworCisgICAgZW1pdExvYWQo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1p
dExvYWQocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxv
YWRHUFIoKSk7CisgICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZv
LCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisKKyAgICBtX2J5VmFsQ29tcGlsYXRp
b25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRo
OworICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJl
dHVybkFkZHJlc3MgPSBjYWxsOworICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7Cit9CisK
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxE
aXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC03MDgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0g
ICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CisgICAgICAgIHJl
Z1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVj
dCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAyZWJiMTNhZmRhNDBlMTY0MGMzYmQ5MzE4MmFm
MmM1NWNhZDU4ZjFhLi5hMWE1MmRlNzdlNGZmNDAzZTI2NzY1Mzc0YmJjYWZkMDlmMGY2MzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUzNSwzNCArNTM1LDQ4IEBA
IHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTCiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0
S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCiB7Ci0gICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
KQorICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgIGNhc2UgUHV0S2luZDo6Tm90RGlyZWN0Ogor
ICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0OworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdDsKKyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dDsKLSAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQotICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Q7
Ci0gICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKLSAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKLSAgICB9Ci0gICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0KQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dDsKLSAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdDsKKyAgICBjYXNlIFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdDsKKyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAg
ICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdDsKKyAgICB9CisgICAgLy8gTWFrZSB3aW4g
cG9ydCBjb21waWxlciBoYXBweQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0
S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSkK
IHsKLSAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3QpCisgICAgc3dpdGNoIChwdXRLaW5kKSB7CisgICAgY2FzZSBQdXRLaW5kOjpOb3RE
aXJlY3Q6CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoK
KyAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAgICBpZiAocHV0
S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCi0gICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIH0KLSAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3QpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
T3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsK
KyAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNT
RVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGNhc2UgUHV0S2luZDo6RGly
ZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7
CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0
aW1pemU7CisgICAgfQorICAgIC8vIE1ha2Ugd2luIHBvcnQgY29tcGlsZXIgaGFwcHkKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
UHV0S2luZCBwdXRLaW5kKQpAQCAtNjA5LDYgKzYyMyw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAoaXNQcm94eSAmJiAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRl
RmllbGRTZXQgfHwgcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUp
KQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3QuYmFzZSgpID09
IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKQEAgLTY2OSw4ICs2ODYsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNz
Q2hhaW47CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0
aW9uU2V0OwotICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IE5vdERpcmVjdCkgewotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRQdXQg
JiYgcHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgICAgICAgICAgICAg
IGlmIChwdXRLaW5kID09IFB1dEtpbmQ6Ok5vdERpcmVjdCkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3Qs
IGJhc2VDZWxsLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1
cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjg4
LDcgKzcwNCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBE
aXJlY3RQcml2YXRlRmllbGRDcmVhdGUpIHsKKyAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9
PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpIHsKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNv
bmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQpAQCAtMTUyMSw4ICsxNTM3
LDggQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24g
PT0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6
ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKLSAgICBl
bHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRl
RmllbGRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkUHV0
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpCi0gICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIGVsc2Ug
aWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVs
ZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkKKyAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVy
YXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAo
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxk
U3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICBlbHNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKaW5kZXggZjYxMGMxOTc3NDY5ZGNkOGM4ZTMwNDYzMWNhYzc0NmJkNDI4NDEz
Zi4uYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2NzQ4NzExNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
QEAgLTU5LDkgKzU5LDkgQEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1
dEtpbmQuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlB1dEJ5VmFs
RmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlj
a2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmlu
ZGV4IGQ0ZDA5MTZmZjJkNzYxNDQwNDNhMzk1ZDNlOGE4MTgzMDcyMDE0NmEuLmY5YTkwN2VkNDFi
ZGU0NTZjZjBkOWQ3ZTE5YjNmOTFiNGJkMWRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTE3Nyw0OCArMTE3NywxMjcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFs
dWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5
dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgIGJvb2wgaXNQcml2YXRl
RmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7Cisg
ICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQz
MkluZGV4KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgKmluZGV4LCB2YWx1
ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVj
dEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKLSAg
ICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVG
aWVsZEFjY2Vzcyk7Ci0gICAgICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlw
dC5hc0RvdWJsZSgpOwotICAgICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJsZSk7Ci0gICAgICAgIGlmIChzdWJzY3Jp
cHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUlu
dDMyKSkgewotICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVj
dEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKLSAgICAg
ICAgICAgIExMSU5UX0VORCgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gRG9uJ3QgcHV0
IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCiAgICAgYXV0byBw
cm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsK
IAotICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRB
Y2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhT
aG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2Ugewot
ICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKLSAgICAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICBpZiAo
Ynl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQotICAgICAgICAgICAgICAgIGJh
c2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+
cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKLSAg
ICAgICAgICAgIExMSU5UX0VORCgpOyAgICAKLSAgICAgICAgfQotCiAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNs
b3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3Qs
IHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0VORCgpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFByaXZhdGVO
YW1lPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2Ny
aXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKKworICAgIC8vIFByaXZhdGUgZmllbGRzIGNh
biBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5k
IGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIGNvbnN0IGJvb2wg
aXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNl
VmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9k
ZSk7CisgICAgaWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpKQorICAgICAgICBiYXNl
T2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUs
IHNsb3QpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoYnl0ZWNvZGUubV9wdXRLaW5kLmlz
U2V0KCkpOworICAgICAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIH0KKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCisgICAgICAgICYmIGJh
c2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkKKyAgICAg
ICAgJiYgc3Vic2NyaXB0LmlzQ2VsbCgpCisgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAg
ICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
YSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
dm0pOworICAgICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6
Ok5ld1Byb3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBiID0gYi0+cHJldmlvdXNJRCgpOwor
CisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVByb3Rv
KGEsIGIpKSB7CisgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQ
cm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0
ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIGItPnJh
cmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3Ry
aW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3Rh
cnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5t
X29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAg
ICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNl
Q2VsbC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUt
PnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2Uo
KSkgeworICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3
UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5l
d1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0
dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJl
ID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZh
bGlkYXRlZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXdQb2x5UHJvdG8g
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbm9ybWFsaXpl
UHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2F3UG9seVByb3RvKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNoYWlu
ICYmICFzYXdQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
b2xkU3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlE
ID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8g
VGhpcyBhc3NlcnQgaGVscHMgY2F0Y2ggYnVncyBpZiB3ZSBhY2NpZGVudGFsbHkgZm9yZ2V0IHRv
IGRpc2FibGUgY2FjaGluZworICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgdHJhbnNpdGlvbiB0
aGVuIHN0b3JlIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5LiBUaGlzIGlzIGNvbW1vbiBhbW9uZwor
ICAgICAgICAgICAgICAgIC8vIHBhdGhzIHRoYXQgcmVpZnkgbGF6eSBwcm9wZXJ0aWVzLiBJZiB3
ZSByZWlmeSBhIGxhenkgcHJvcGVydHkgYW5kIGZvcmdldAorICAgICAgICAgICAgICAgIC8vIHRv
IGRpc2FibGUgY2FjaGluZywgd2UgbWF5IGNvbWUgZG93biB0aGlzIHBhdGguIFRoZSBSZXBsYWNl
IElDIGRvZXMgbm90CisgICAgICAgICAgICAgICAgLy8ga25vdyBob3cgdG8gbW9kZWwgdGhlc2Ug
dHlwZXMgb2Ygc3RydWN0dXJlIHRyYW5zaXRpb25zIChvciBhbnkgc3RydWN0dXJlCisgICAgICAg
ICAgICAgICAgLy8gdHJhbnNpdGlvbiBmb3IgdGhhdCBtYXR0ZXIpLgorICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG5ld1N0cnVjdHVyZSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIG5ld1N0cnVjdHVyZS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90
LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgp
OworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCk7CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBj
b2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDZj
MzA4ZDlmM2RkZTI1YjlmZTFiNjhkNzc2MGQ0ZWVlMTFiMWFhODkuLmE2MzU0ZmY5ZDhhNzg3ODFl
MThjYmZlODMzZjNhOWMxY2NiOGNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXgg
ZWJkMzZiYWNlZGQ0ZTAzODE0MDE2MjlmOTZhMTE2NWExZTdlOTM2Ni4uYTYwMmFiZjAzMjgyYjEy
MGQzYzYxY2VmNzk5NjFhMmEwOTAwMWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTYxNCw2ICs2
MTQsMTMgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLCByZWxvYWRB
ZnRlclNsb3dQYXRoKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd3JpdGVCYXJyaWVyT25P
cGVyYW5kV2l0aFJlbG9hZChzaXplLCBnZXQsIGNlbGxGaWVsZE5hbWUsIHJlbG9hZEFmdGVyU2xv
d1BhdGgpCisgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndyaXRlQmFycmllckRvbmUpCisg
ICAgd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZCh0MiwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkK
Ky53cml0ZUJhcnJpZXJEb25lOgorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChz
aXplLCBnZXQsIGNlbGxGaWVsZE5hbWUpCiAgICAgZ2V0KGNlbGxGaWVsZE5hbWUsIHQxKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQxLCBDZWxsVGFnLCB0MiwgLndy
aXRlQmFycmllckRvbmUpCkBAIC0xNjkzLDYgKzE3MDAsNDggQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0
X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBn
ZXQsIG1fYmFzZSwgbV92YWx1ZSkKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVO
YW1lU2xvdykKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BQdXRQcml2YXRlTmFtZVNsb3cp
CisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFk
YXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcFB1dFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQzCisgICAgYmluZXEgdDMsIHQx
LCAub3BQdXRQcml2YXRlTmFtZVNsb3cKKworICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZToK
KyAgICAjIHQwIC0+IG9iamVjdCBiYXNlCisgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJ
RAorICAgICMgdDUgLT4gbWV0YWRhdGEKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1l
dGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBidGl6IHQxLCAub3BQdXROb3RU
cmFuc2l0aW9uCisKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAg
ICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRXaXRoUmVsb2FkKHNpemUsIGdldCwgbV9iYXNlLCBtYWNy
byAoKQorICAgICAgICAjIFJlbG9hZCBtZXRhZGF0YSBpbnRvIHQ1CisgICAgICAgIG1ldGFkYXRh
KHQ1LCB0MSkKKyAgICAgICAgIyBSZWxvYWQgYmFzZSBpbnRvIHQwCisgICAgICAgIGdldChtX2Jh
c2UsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwg
Q2VsbFRhZywgdDAsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBlbmQpCisKKy5vcFB1dE5v
dFRyYW5zaXRpb246CisgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0IG5vdyBpcyB0MCwg
d2hpY2ggaG9sZHMgdGhlIGJhc2UuCisgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBPcFB1dFByaXZhdGVO
YW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQorICAgIGRpc3BhdGNoKCkKKworLm9wUHV0UHJpdmF0
ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9wcml2YXRl
X25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBlMjc2MDkyOGEwZmM5NDEzOTgwOWZk
M2U4Y2M4ZmUyMWJhOTc5NzlhLi4wYTM1OWRlZTMyZGMwMzYwM2Q2Y2Q5NDZkYjExNTgwZDQyZjI5
OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMTczNCw2ICsxNzM0LDQ5IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1
dF9wcml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0UHJpdmF0ZU5hbWVTbG93KQor
ICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChz
aXplLCB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIp
CisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURb
dDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BQdXRQ
cml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wUHV0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjpt
X3Byb3BlcnR5W3Q1XSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIC5vcFB1dFByaXZhdGVOYW1lU2xv
dworCisgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgorICAgICMgdDAgLT4gb2JqZWN0IGJh
c2UKKyAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECisgICAgIyB0NSAtPiBtZXRhZGF0
YQorCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJl
SURbdDVdLCB0MQorICAgIGJ0aXogdDEsIC5vcFB1dE5vdFRyYW5zaXRpb24KKworICAgIHN0b3Jl
aSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFu
ZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBtX2Jhc2UsIG1hY3JvICgpCisgICAgICAgICMgUmVsb2Fk
IG1ldGFkYXRhIGludG8gdDUKKyAgICAgICAgbWV0YWRhdGEodDUsIHQxKQorICAgICAgICAjIFJl
bG9hZCBiYXNlIGludG8gdDAKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGVuZCkKKworLm9wUHV0Tm90VHJh
bnNpdGlvbjoKKyAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93IGlzIHQwLCB3aGlj
aCBob2xkcyB0aGUgYmFzZS4KKyAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MSwgdDIpCisgICAgbG9hZGkgT3BQdXRQcml2YXRlTmFtZTo6TWV0
YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDAsIHQyKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX2Jh
c2UsIG1fdmFsdWUpCisgICAgZGlzcGF0Y2goKQorCisub3BQdXRQcml2YXRlTmFtZVNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKKyAgICBk
aXNwYXRjaCgpCitlbmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFt
ZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYWUzM2ZmZjQwMzQ5
NDZjNjczZThmOWI1ZDk4ZjM3YTZhNDFjYWNjYi4uNTk5N2MwNzZjNzAxZjdiNmFiNmUyNjVmYTU4
NmIwODc2MzM2YTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0
ZUZpZWxkU2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBpbmxpbmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIGlubGluZSB2b2lkIHB1dFBy
aXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgaW5saW5lIHZvaWQgc2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBpbmxp
bmUgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5n
dGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAppbmRleCA5NTQ1YzFlMTk1MWE4Y2U4ZDczYWEwMDExOWI1YzgyNGYzYmQ4ZTFmLi42
YzUzOWZjZTMzNGRjNmE0ZWJkZGMyOThjNGIwYjEwZGY1NzMxMWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNjE3LDcgKzYxNyw3
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCB0cnVlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCitpbmxpbmUgdm9pZCBKU09iamVj
dDo6c2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xv
dCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZmZjg5ZDNm
YzZiZjJkMzg0ZmFjYmQwYzk1NWZiNDdlOGFmNmY5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRL
aW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK3ZvaWQgUHJpdmF0ZUZpZWxkUHV0S2luZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIGlmIChpc1NldCgpKQorICAgICAgICBvdXQucHJpbnQoIlNldCIpOworICAgIGVs
c2UgaWYgKGlzRGVmaW5lKCkpCisgICAgICAgIG91dC5wcmludCgiRGVmaW5lIik7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChpc05vbmUoKSk7CisgICAgICAgIG91dC5wcmludCgiTm9uZSIp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZGM0
Y2EzMDQ4ZWM3ZGEwMWRiYTBkMGFhZmM4NGJiNTY3NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaApAQCAtMCww
ICsxLDYzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBQcmludFN0
cmVhbTsKK307CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE5vbmUgPSAwOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCBTZXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBE
ZWZpbmUgPSAyOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBQcml2YXRlRmllbGRQ
dXRLaW5kIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2lu
ZChieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBub25l
KCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChOb25lKTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgUHJpdmF0ZUZpZWxkUHV0S2luZCBzZXQoKSB7IHJldHVybiBQcml2YXRlRmllbGRQdXRL
aW5kKFNldCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtpbmQgZGVm
aW5lKCkgeyByZXR1cm4gUHJpdmF0ZUZpZWxkUHV0S2luZChEZWZpbmUpOyB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb25lOyB9
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9
PSBTZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZpbmUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlID09IERlZmluZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3Ry
ZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFByaXZhdGVGaWVsZFB1dEtp
bmQodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdmFsdWUgPT0gTm9uZSB8fCBtX3ZhbHVlID09IFNldCB8fCBtX3ZhbHVlID09
IERlZmluZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWludDhfdCBtX3ZhbHVlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDNkMDc2ZjJjYzYxYTBmOGNhNjY0ODYwMzdlYTY1MDJmZTNlYjU4
M2IuLjYxMTAwNjYwZWI1YmI0ZDAzZTUyZTlmMmFlM2E4MmVlZDkwYTRjZDMgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMjAtMDktMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUgcHJpdmF0ZSBm
aWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGp1c3RpbmcgdGVzdHMgdGhhdCBlbWl0IGBnZXRfcHJpdmF0ZV9uYW1lYCB0
byBhdm9pZCBleGVjdXRpb24gaW4KKyAgICAgICAgRlRML0RGRy4KKworICAgICAgICAqIG1pY3Jv
YmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1m
aWVsZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1w
cml2YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvcG9seW1vcnBoaWMtcHV0LXB1YmxpYy1maWVsZC5qczogQWRkZWQuCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL3B1dC1wdWJsaWMtZmllbGQuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jaGVjay1iYXJyaWVyLWluc2VydGlvbi5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1
dC1ieS1pZC1kaXJlY3QuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9kZmctcHV0LXByaXZh
dGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1
Y3R1cmUtdHJhc2l0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUt
bmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1
dC1wcml2YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1tdWx0LXB1dC1ieS1vZmZzZXQuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRp
bmctdG8tcHV0LWJ5LW9mZnNldC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtZ2VuZXJpYy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRl
LW5hbWUtaW52YWxpZC1kZWZpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJp
dmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQt
cHJpdmF0ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXBvbHltb3JwaGljLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1wcml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qczogQWRkZWQuCisK
IDIwMjAtMDktMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUZXN0MjYyIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQt
cHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzZjOGM0OWJkZWQyZTJiY2IzNzY3N2Y0NjU0
MTU1MWI4NmQ1NTYyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMKQEAg
LTAsMCArMSwyNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVy
cz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitjbGFzcyBDIHsKKyAg
ICAjZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9
IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0
IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIg
PSAwOworCitsZXQgYzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsKKworbGV0IGFyciA9IFtjMSwg
YzIsIGMzXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBhcnJb
aSAlIGFyci5sZW5ndGhdLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRl
LWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjI4ZDM4OGJiMDUwYjYyZTY1OThiZjdjODNhZmE0ODg2
MDg1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDE2IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIHNl
dEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7CisgICAgfQorfQor
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3Ig
KGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGMuc2V0RmllbGQoaSk7Cit9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wdWJs
aWMtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHVi
bGljLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMzJmY2ZjNTU0ZTQ4ZWY0NzUzNzcxYzM5NWZiMmVl
OGVhNjVlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5
bW9ycGhpYy1wdXQtcHVibGljLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIEMgewor
ICAgIGZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9
IHZhbHVlOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0
IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIg
PSAwOworCitsZXQgYzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsKKworbGV0IGFyciA9IFtjMSwg
YzIsIGMzXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBhcnJb
aSAlIGFyci5sZW5ndGhdLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9wdXQtcHVibGljLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvcHV0LXB1YmxpYy1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmZjY2UyZWY2NDE2NDgzZTYyMjcz
YzhmNTA0NWViNDQxNjg1ZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcHV0LXB1YmxpYy1maWVsZC5qcwpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBDIHsKKyAg
ICBmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2
YWx1ZTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBj
ID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYy5z
ZXRGaWVsZChpKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0
ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXB1
dC1wcml2YXRlLW5hbWUtY2hlY2stYmFycmllci1pbnNlcnRpb24uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY1
ZTYzMDU1NzhkZWY2OGI0ZTI2ZmZmOGU3MWNmOWUwYjk0OGZjYgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNoZWNrLWJhcnJpZXItaW5zZXJ0
aW9uLmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3Vw
cG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4
UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24oYSwgZSkgeworICAgICAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikg
eworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJl
d0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9u
Iik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRo
aXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgbGV0IGFyciA9IFsicDEiLCAicDIi
LCAicDMiXTsKKworICAgICAgICBsZXQga2V5ID0gYXJyW2kgJSAzXTsKKyAgICAgICAgdGhpc1tr
ZXldID0gaTsKKyAgICAgICAgaWYgKGtleSA9PT0gInAyIikKKyAgICAgICAgICAgIHRoaXNbInAx
Il0gPSBpOworCisgICAgICAgIGlmIChrZXkgPT09ICJwMyIpIHsKKyAgICAgICAgICAgIHRoaXNb
InAxIl0gPSBpOworICAgICAgICAgICAgdGhpc1sicDIiXSA9IGk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICB9CisK
KyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKK25vSW5saW5lKEMucHJvdG90eXBlLmdl
dEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vRlRMKEMucHJvdG90eXBl
LmdldEZpZWxkKTsKKworbGV0IG9sZE9iamVjdCA9IG5ldyBDOworZm9yICg7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgaWYgKGkgPCA1MDAwKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAg
ICAgIGMuc2V0RmllbGQoaSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGkgPT0gNTAwMCkK
KyAgICAgICAgICAgIGdjKCk7CisgICAgICAgIG9sZE9iamVjdC5zZXRGaWVsZCh7cHJvcDogaX0p
OworICAgICAgICBlZGVuR0MoKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShvbGRPYmplY3Qu
Z2V0RmllbGQoKS5wcm9wLCBpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1ieS1pZC1kaXJlY3QuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnkt
aWQtZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdkMGRhOTFl
NTJkMTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZh
dGUtbmFtZS1jb21waWxlZC1hcy1wdXQtYnktaWQtZGlyZWN0LmpzCkBAIC0wLDAgKzEsNTQgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Z0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogZnVuY3Rpb24oZXhj
ZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7
CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgeworICAgICAgICBsZXQg
YXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkgPSBhcnJbaSAlIDNd
OworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09PSAicDIiKQorICAg
ICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInAzIikgewor
ICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlzWyJwMiJdID0gaTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmll
bGQgPSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworZm9y
ICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBpZiAoaSA+IDUw
MDApIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisg
ICAgICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Rm
Zy1wdXQtcHJpdmF0ZS1uYW1lLWNvbXBpbGVkLWFzLXB1dC1wcml2YXRlLW5hbWUtYnktaWQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJp
dmF0ZS1uYW1lLWJ5LWlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZWM4YWRiYzQ4MTRhMzYwY2M4MzU4MDdk
MGRhOTFlNTJkMTcyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZmctcHV0
LXByaXZhdGUtbmFtZS1jb21waWxlZC1hcy1wdXQtcHJpdmF0ZS1uYW1lLWJ5LWlkLmpzCkBAIC0w
LDAgKzEsNTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9
dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIiwgIi0tbWF4UG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZ0xpc3RTaXplPTIiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czog
ZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlv
bjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRo
cmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
dGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBi
dXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsK
KworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgewor
ICAgICAgICBsZXQgYXJyID0gWyJwMSIsICJwMiIsICJwMyJdOworCisgICAgICAgIGxldCBrZXkg
PSBhcnJbaSAlIDNdOworICAgICAgICB0aGlzW2tleV0gPSBpOworICAgICAgICBpZiAoa2V5ID09
PSAicDIiKQorICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisKKyAgICAgICAgaWYgKGtleSA9
PT0gInAzIikgeworICAgICAgICAgICAgdGhpc1sicDEiXSA9IGk7CisgICAgICAgICAgICB0aGlz
WyJwMiJdID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZp
ZWxkKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQzsKKyAg
ICBpZiAoaSA+IDUwMDApIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYy5zZXRGaWVsZC5jYWxsKHt9KTsKKyAgICAgICAgfSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGMuc2V0RmllbGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0LWRvLW5vdC1hZGQtc3RydWN0dXJl
LXRyYXNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtYnktaWQtc2V0
LWRvLW5vdC1hZGQtc3RydWN0dXJlLXRyYXNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ2ZTQ1MzY0
YjAyYjQzNTU0ZWQzNjJkNGFhOGRlMTBiYzQ3ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1ieS1pZC1zZXQtZG8tbm90LWFkZC1zdHJ1Y3R1cmUt
dHJhc2l0aW9uLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQHJlcXVpcmVPcHRpb25zKCItLWFsbG93
VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiLCAi
LS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dz
OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0
aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAg
dGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAg
ICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBl
eGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0
aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAi
IGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQmFz
ZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHJldHVybiB7fTsKKyAgfQorfQorCitjbGFzcyBD
IGV4dGVuZHMgQmFzZSB7CisgICAgI2ZpZWxkID0gMDsKKworICAgIGdldEZpZWxkKGNoYW5nZVJl
Y2lldmVyKSB7CisgICAgICAgIGxldCByID0gdGhpczsKKyAgICAgICAgaWYgKGNoYW5nZVJlY2ll
dmVyKSB7CisgICAgICAgICAgICByID0ge307CisgICAgICAgIH0KKworICAgICAgICByLiNmaWVs
ZCA9ICdiYXInOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKwor
bGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAg
aWYgKGkgPCA5MDAwKQorICAgICAgICBDLnByb3RvdHlwZS5nZXRGaWVsZC5jYWxsKGMsIGZhbHNl
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwoYywgdHJ1ZSk7Cisg
ICAgICAgIH0pOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXBy
aXZhdGUtbmFtZS1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE2OTVhMWFk
ZTM3NjljNjE0ZGRjOTMwMTMyZWFmODhlMjFlYzJkYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKQEAgLTAs
MCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRo
aXMuaW5pdCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAg
ICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0K
KworICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKwor
ICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQor
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0
RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5z
ZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAn
Zm9vJyArIGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWNvbnN0YW50LWZvbGRpbmctdG8tbXVsdC1wdXQtYnktb2Zmc2V0LmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LXByaXZhdGUtbmFtZS1jb25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9m
ZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMDJmYWE4OTFhZTQxNDAxZWVhY2ZkYWVkODM1ZjRlNDJkZjRl
NWU0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1j
b25zdGFudC1mb2xkaW5nLXRvLW11bHQtcHV0LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDU3IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEs
IGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitsZXQgaXRlcmF0
aW9ucyA9IDEwMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRpb24gPSBmYWxzZTsKK2xldCBjb25z
dHJ1Y3REaWZmZXJlbnQgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IHRoaXMuaW5p
dCgpOworCisgICAgaW5pdCgpIHsKKyAgICAgICAgaWYgKGNvbnN0cnVjdERpZmZlcmVudCkKKyAg
ICAgICAgICAgIHRoaXMuZm9vID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
bWV0aG9kKGosIG90aGVyKSB7CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgbGV0IG9iaiA9
IHRoaXM7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyB0cmlnZ2VyQ29tcGlsYXRpb24gJiYgaSA8
IGl0ZXJhdGlvbnM7IGkrKykKKyAgICAgICAgICAgIGMrKzsKKyAgICAgICAgaWYgKGogJSAyKSB7
CisgICAgICAgICAgICBvdGhlci5mb28gPSBqOworICAgICAgICAgICAgb2JqID0gb3RoZXI7Cisg
ICAgICAgIH0KKyAgICAgICAgb2JqLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnBy
b3RvdHlwZS5tZXRob2QpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkco
Qy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCits
ZXQgb3RoZXJDID0gbmV3IEMoKTsKKworY29uc3RydWN0RGlmZmVyZW50ID0gdHJ1ZTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAzMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMu
bWV0aG9kKGksIG90aGVyQyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIDAp
OworfQorCit0cmlnZ2VyQ29tcGlsYXRpb24gPSB0cnVlCitsZXQgYyA9IG5ldyBDKCk7CitjLm1l
dGhvZCgwLCBvdGhlckMpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksIGl0ZXJhdGlv
bnMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0
YW50LWZvbGRpbmctdG8tcHV0LWJ5LW9mZnNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2
YXRlLW5hbWUtY29uc3RhbnQtZm9sZGluZy10by1wdXQtYnktb2Zmc2V0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3MjBlYzgwNGE5NGY3MWUzNThlYTdhYWU2YTZmZThkZWUyNTg1NTIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWNvbnN0YW50LWZvbGRpbmctdG8t
cHV0LWJ5LW9mZnNldC5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
YWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOwor
ICAgIH0KK30KKworbGV0IGl0ZXJhdGlvbnMgPSAxMDAwMDsKK2xldCB0cmlnZ2VyQ29tcGlsYXRp
b24gPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICNmaWVsZCA9IDA7CisKKyAgICBtZXRob2QoKSB7
CisgICAgICAgIGxldCBjID0gMDsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IHRyaWdnZXJDb21w
aWxhdGlvbiAmJiBpIDwgaXRlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgYysrOworICAgICAg
ICB0aGlzLiNmaWVsZCA9IGM7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVs
ZCk7Citub0RGRyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRG
aWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKysp
IHsKKyAgICBjLm1ldGhvZCgpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAw
KTsKK30KKwordHJpZ2dlckNvbXBpbGF0aW9uID0gdHJ1ZQorYy5tZXRob2QoKTsKK2Fzc2VydC5z
YW1lVmFsdWUoYy5nZXRGaWVsZCgpLCBpdGVyYXRpb25zKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LXByaXZhdGUtbmFtZS1nZW5lcmljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNmMyOTljNjYyNzBiYWJjYTNk
MDA3YjdhNzgzMDk3NzI3OTRkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLWdlbmVyaWMuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24g
KGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfQorCitmdW5jdGlv
biBjbGFzc0RlY2xhcmF0aW9uKGR5bmFtaWNQcm9wZXJ0eSkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICAjZmllbGQgPSB0aGlzLmluaXQoKTsKKyAgICAKKyAgICAgICAgaW5pdCgpIHsKKyAgICAg
ICAgICAgIHRoaXNbZHluYW1pY1Byb3BlcnR5XSA9IGR5bmFtaWNQcm9wZXJ0eTsKKyAgICAgICAg
fQorCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsK
KyAgICAgICAgfQorCisgICAgICAgIGdldEZpZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUu
c2V0RmllbGQpOworICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0RG
RyhDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQp
OworCisgICAgcmV0dXJuIEM7Cit9Citub0lubGluZShjbGFzc0RlY2xhcmF0aW9uKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IENsYXNzID0gY2xhc3NEZWNs
YXJhdGlvbigncHJvcGVydHknICsgaSk7CisgICAgbGV0IGMgPSBuZXcgQ2xhc3MoKTsKKyAgICBj
LnNldEZpZWxkKCd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0
ZXN0Jyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUt
aW52YWxpZC1kZWZpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFs
aWQtZGVmaW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NTk4ZTcwMTlkMzc0ZDYwYWE5ZDdjZGE5Y2Y1NDJi
NzE2N2YzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLWludmFsaWQtZGVmaW5lLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBl
KSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6
IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRp
b247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4
Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRo
cm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIg
YnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgc2hvdWxk
T3ZlcnJpZGVSZXR1cm4gPSBmYWxzZTsKK2xldCBvYmo7CisKK2NsYXNzIEIgeworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICBpZiAoc2hvdWxkT3ZlcnJpZGVSZXR1cm4pCisgICAgICAgICAg
ICByZXR1cm4gb2JqOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIEMg
ZXh0ZW5kcyBCIHsKKyAgI2ZpZWxkID0gJ3Rlc3QnOworCisgIGdldEZpZWxkKCkgeworICAgICAg
cmV0dXJuIHRoaXMuI2ZpZWxkOworICB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25v
SW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKK25vREZHKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKK25vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgIGlmIChpID4gMTAwMCkgeworICAgICAgc2hvdWxkT3ZlcnJpZGVSZXR1
cm4gPSB0cnVlOworICAgICAgb2JqID0ge307CisgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
ICBhc3NlcnQuc2FtZVZhbHVlKEMucHJvdG90eXBlLmdldEZpZWxkLmNhbGwob2JqKSwgJ3Rlc3Qn
KTsKKyAgICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAg
ICBuZXcgQygpOworICAgICAgfSk7CisgIH0gZWxzZSB7CisgICAgICBsZXQgb2JqID0ge307Cisg
ICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZ2V0RmllbGQo
KSwgJ3Rlc3QnKTsKKyAgICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgICBjLmdldEZpZWxkLmNhbGwob2JqKTsKKyAgICAgIH0pOworICB9Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLWludmFsaWQtc3RvcmUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjM0N2NlYTYwMDA1YTliNWY4NjhhMGI1M2JmMjFkNzVjMjRmYmIwOAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtaW52YWxpZC1zdG9yZS5q
cwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRl
ZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24s
IGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IHNob3VsZFN0b3JlID0gZmFsc2U7CisKK2Z1
bmN0aW9uIGZvbygpIHsKKyAgY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7Cisg
ICAgI2ZvbzsKKworICAgIGluaXQoKSB7CisgICAgICBpZiAoc2hvdWxkU3RvcmUpCisgICAgICAg
IHRoaXMuI2ZvbyA9IDEyOworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXcgQygpOworfQorbm9J
bmxpbmUoZm9vKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgIGlmIChp
ID4gMTAwMCkgeworICAgIHNob3VsZFN0b3JlID0gdHJ1ZTsKKyAgICBhc3NlcnQuc2hvdWxkVGhy
b3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICBmb28oKTsKKyAgICB9KTsKKyAgfSBlbHNlIHsK
KyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzE0ZmE5ZTcwNDlmMWI4MGIwMmZjMGE3MTk1
NDdlN2EyMWRiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAs
MCArMSw2OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWFsbG93VW5zdXBwb3J0ZWRUaWVycz10
cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikgewor
ICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBm
dW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBp
dCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4
Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7
CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAg
ICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIGdldEZp
ZWxkKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAg
fQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKyAgICBub0lubGluZShDLnBy
b3RvdHlwZS5nZXRGaWVsZCk7CisgICAgbm9ERkcoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworICAg
IG5vRlRMKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworICAgIHJldHVybiBDOworfQorCitsZXQg
QyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3Mo
KTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZpZWxkKCks
ICd0ZXN0Jyk7CitjMi5zZXRGaWVsZCgnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmdldEZp
ZWxkKCksICdmb28nKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgKCkgPT4geworICAgIGMuc2V0RmllbGQuY2FsbChjMiwgJ3Rlc3QnKTsKK30pOworCith
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLnNldEZpZWxkLmNhbGwoYywg
J3Rlc3QnKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1u
YW1lLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43Y2ZjNTM2NGNhOWUwMmNlOTUyM2JhYzQxNWMxODAxNDZlMTU2ODlkCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS1wb2x5bW9ycGhpYy13
aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwg
ZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsK
KworY2xhc3MgQyB7CisgICAgI2ZpZWxkID0gdGhpcy5pbml0KCk7CisKKyAgICBpbml0KCkgewor
ICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7Cisg
ICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc2V0RmllbGQodikgeworICAgICAg
ICB0aGlzLiNmaWVsZCA9IHY7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVs
ZCk7Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7Citub0RGRyhDLnByb3RvdHlwZS5n
ZXRGaWVsZCk7Citub0ZUTChDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2ZvciAoOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9v
JyArIGkpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOwor
fQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2EzMjk3YmVkODJkN2MwYzdlNTJkNTVhNzVl
NWFjMjExODFiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZh
dGUtbmFtZS13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDMyIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9CisKK2Ns
YXNzIEMgeworICAgICNmaWVsZCA9ICd0ZXN0JzsKKworICAgIHNldEZpZWxkKHYpIHsKKyAgICAg
ICAgdGhpcy4jZmllbGQgPSB2OworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0Rmll
bGQpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworbm9ERkcoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworbm9GVEwoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0Jyk7CisgICAgYy5zZXRGaWVsZCgnZm9vJyArIGkp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5nZXRGaWVsZCgpLCAnZm9vJyArIGkpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlmZmVyZW50
LWlkZW50aWZpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdpdGgtZGlm
ZmVyZW50LWlkZW50aWZpZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzN2Q4MTdlZGUxNGEyMDM1ZjM1YTY4
OGJhNDE1ZGExNWZkMzcyOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1w
cml2YXRlLW5hbWUtd2l0aC1kaWZmZXJlbnQtaWRlbnRpZmllci5qcwpAQCAtMCwwICsxLDM5IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGNsYXNzRGVjbGFyYXRpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgICNmaWVsZDsKKyAgICAKKyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhp
cy4jZmllbGQgPSB2OworICAgICAgICB9CisKKyAgICAgICAgZ2V0RmllbGQoKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBub0lubGlu
ZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0Rmll
bGQpOworICAgIG5vREZHKEMucHJvdG90eXBlLmdldEZpZWxkKTsKKyAgICBub0ZUTChDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7CisKKyAgICByZXR1cm4gQzsKK30KK25vSW5saW5lKGNsYXNzRGVjbGFy
YXRpb24pOworbGV0IEMxID0gY2xhc3NEZWNsYXJhdGlvbigpOworbGV0IEMyID0gY2xhc3NEZWNs
YXJhdGlvbigpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQg
YyA9IGkgJSAyID8gbmV3IEMxIDogbmV3IEMyOworICAgIGMuc2V0RmllbGQoJ3Rlc3QnICsgaSk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmdldEZpZWxkKCksICd0ZXN0JyArIGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409450</attachid>
            <date>2020-09-22 22:31:39 -0700</date>
            <delta_ts>2020-09-23 09:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213372-20200923023127.patch</filename>
            <type>text/plain</type>
            <size>174283</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2FmMDRhZDM3ZWNlYWI4ZTNlNzY3MmEyOTJmZjdiMGE3M2I0NTJlLi41MTIxZGRmMTk1MGRhY2Rl
ZTgxZjVkODcyOWI0Y2E4YjYyMDgxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODIgQEAKKzIwMjAtMDktMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdW0VTTmV4dF0gQ3JlYXRlIGEgbmV3IG9wY29kZSB0byBoYW5kbGUg
cHJpdmF0ZSBmaWVsZHMgc3RvcmUvZGVmaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2Ug
U3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgbmV3IG9wY29kZSB0byBo
YW5kbGUgcHJpdmF0ZSBmaWVsZCBzdG9yYWdlLgorICAgICAgICBCZWZvcmUgdGhpcyBjaGFuZ2Us
IHdlIHdlcmUgdXNpbmcgYHB1dF9ieV92YWxfZGlyZWN0YCBhbmQgaW5jbHVkaW5nCisgICAgICAg
IHRoZSBpbmZvcm1hdGlvbiBvZiBgUHV0S2luZGAgaW50byBgUHV0QnlWYWxGbGFnc2AuIFdlIGlu
aXRpYWxseSBkZWNpZGVkCisgICAgICAgIHRvIHVzZSBgcHV0X2J5X3ZhbF9kaXJlY3RgIHRvIHRh
a2UgYWR2YW50YWdlIG9mIGFsbCBJQyBtZWNoYW5pc20gYWxyZWFkeQorICAgICAgICBpbXBsZW1l
bnRlZCBmb3IgdGhpcyBpbnN0cnVjdGlvbiwgaG93ZXZlciB0aGUgc2VtYW50aWNzIG9mIHByaXZh
dGUgZmllbGQKKyAgICAgICAgaXMgZGlmZmVyZW50IGVub3VnaCB0byBjb21wbGljYXRlIHRoZSB1
bmRlcnN0YW5kaW5nIG9mCisgICAgICAgIGBwdXRfYnlfdmFsX2RpcmVjdGAuCisKKyAgICAgICAg
VGhlIG5ldyBpbnN0cnVjdGlvbiBpcyBjYWxsZWQgYHB1dF9wcml2YXRlX25hbWVgIGFuZCBoYXMg
YXMgaXRzIG9wZXJhbmRzCisgICAgICAgIGBiYXNlT2JqZWN0YCB3aGVyZSB0aGUgcHV0IGlzIGdv
aW5nIHRvIGJlIHBsYWNlZCwgdGhlIGBwcm9wZXJ0eWAKKyAgICAgICAgdGhhdCdzIGdvaW5nIHRv
IGJlIGluc3RhbGxlZCAoaXQgaXMgYWx3YXlzIGEgcHJpdmF0ZSBzeW1ib2wgb2YgYQorICAgICAg
ICBwcml2YXRlIGZpZWxkKSwgdGhlIGB2YWx1ZWAgd2UgYXJlIGdvaW5nIHRvIHN0b3JlIGFuZCB0
aGUKKyAgICAgICAgYFByaXZhdGVGaWVsZFB1dEtpbmRgIHRoYXQgY2FuIGJlIGBEZWZpbmVgIG9y
IGBTZXRgLgorICAgICAgICBUaGUgZGlmZmVyZW5jZSBvZiBlYWNoIGBQcml2YXRlRmllbGRQdXRL
aW5kYCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgLSBEZWZpbmU6IEl0IGRl
ZmluZXMgYSBuZXcgcHJpdmF0ZSBmaWVsZC4gSWYgdGhpcyBmaWVsZCBpcyBhbHJlYWR5CisgICAg
ICAgIHByZXNlbnQsIGl0IHRocm93cyBhIGBUeXBlRXJyb3JgLgorICAgICAgICAtIFNldDogSXQg
c2V0cyB0aGUgdmFsdWUgb2YgYSBwcml2YXRlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgbm90Cisg
ICAgICAgIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiBzZXQsIGl0IHRocm93cyBhIGBUeXBlRXJy
b3JgLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgc3VwcG9ydCBvZiBJQyBmb3IgYWxs
IHRpZXJzLiBGb3IgREZHIGFuZCBGVEwsIHdlCisgICAgICAgIGFyZSBvbmx5IGVtbWl0aW5nIElD
IHdoZW4gd2UgYXJlIGFibGUgdG8gZW1pdCBgQ2hlY2tDb25zdGFudGAKKyAgICAgICAgZm9yIHN1
YnNjcmlwdCBpZGVudGlmaWVyIGR1cmluZyBCeXRlY29kZSBwYXJzaW5nLiBXZSBhcmUgYWRkaW5n
IGEgbmV3CisgICAgICAgIERGRyBub2RlIGNhbGxlZCBgUHV0UHJpdmF0ZU5hbWVCeUlkYCB0aGF0
IGhhbmRsZXMgc3VjaCBjYXNlcyB3aGVuIHdlCisgICAgICAgIGhhdmUgY29uc3RhbnQgaWRlbnRp
ZmllcnMuCisgICAgICAgIFdlIGFyZSBhbHNvIGFkZGluZyBhIG5ldyBERkcgbm9kZSBgUHV0UHJp
dmF0ZU5hbWVgIHRoYXQgaGFuZGxlcyBnZW5lcmljCisgICAgICAgIGNhc2Ugb2YgYHB1dF9wcml2
YXRlX25hbWVgLiBUaGUgc3RyYXRlZ3kgdXNlZCB0byBjb21waWxlCisgICAgICAgIGBwdXRfcHJp
dmF0ZV9uYW1lYCBpcyB2ZXJ5IHNpbWlsYXIgd2l0aCB3aGF0IHdlIGFyZSB1c2luZyB3aXRoCisg
ICAgICAgIGBwdXRfYnlfdmFsW19kaXJlY3RdYC4gV2UgZmlyc3QgdHJ5IHRvIGNvbXBpbGUgaXQg
YXMgYFtNdWx0aV1QdXRCeU9mZnNldGAKKyAgICAgICAgdXNpbmcgcHJvZmlsZWQgaW5mb3JtYXRp
b24gZnJvbSBMTEludCBhbmQgQmFzZWxpbmUgZXhlY3V0aW9uLiBJZiBpdAorICAgICAgICBpcyBu
b3QgcG9zc2libGUsIHdlIHRoZW4gZW1pdCBgUHV0UHJpdmF0ZU5hbWVbQnlJZF1gIG5vZGUuIFdl
IGdldCBhbm90aGVyCisgICAgICAgIGNoYW5jZSB0byB0cmFuc2Zvcm0gYFB1dFByaXZhdGVOYW1l
QnlJZGAgaW50byBgUHV0QnlPZmZzZXRgIGlmIHdlIGNhbiBwcm92ZQorICAgICAgICBpdHMgc3Ry
dWN0dXJlIHNldCBhdCBjb25zdGFudCBmb2xkaW5nIHBoYXNlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5
dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChK
U0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvUHV0S2luZC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojp0cnlGb2xkQXNQdXRCeU9mZnNldCk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9NdWx0aVB1dEJ5T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWNoZWFibGVJZGVudGlmaWVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpwcml2YXRlRmllbGRQdXRLaW5kKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6
OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAg
KiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkJ5VmFsQ29tcGlsYXRpb25JbmZvOjpCeVZhbENv
bXBpbGF0aW9uSW5mbyk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24p
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlPE9wUHV0UHJpdmF0
ZU5hbWU+KToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5
VmFsRGlyZWN0Pik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpzZXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRl
RmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQ
dXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRQdXRCeUlEKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5o
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRQcml2YXRlRmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJpdmF0ZUZp
ZWxkUHV0S2luZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5k
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmZyb21CeXRlKToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVGaWVsZFB1dEtpbmQ6OnNldCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtp
bmQ6OmRlZmluZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzTm9uZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OmlzU2V0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZUZpZWxkUHV0S2luZDo6aXNEZWZpbmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlRmllbGRQdXRLaW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlByaXZhdGVGaWVsZFB1dEtpbmQ6OlByaXZhdGVGaWVsZFB1dEtpbmQpOgorCiAyMDIwLTA5
LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
RHJvcCBPcHRpb25zOjp1c2VCaWdJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA5MzE1OWFmYjg1ODRkODk0MGVkNWQ1YjNmMjdhMzQ0M2U4ZjA4ZDMyLi44MDBkZWY0YWE5
ZWMyNjk3YTUwNDFiODBkZjA4ZTcxMDg2MjM1MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDcsNyArNTQ3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUv
UHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAg
IGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKQEAg
LTk3MSw2ICs5NzAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25zTGlzdC5oCiAg
ICAgcnVudGltZS9QYXJzZUludC5oCisgICAgcnVudGltZS9Qcml2YXRlRmllbGRQdXRLaW5kLmgK
ICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM4NDIwNmU3Y2FmZTNkZjhiZjhhMjk3MzFkOTAzNTNjNDRkYTA5YjguLmYz
YmZhZTE5YjE4MmNiNTI3NGJlNjEyMTkyZDg1MzYwNmIzYzBlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjU1LDcgKzEyNTUsNiBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBG
QUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8q
IEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0
RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
NjQsNiArMTI2Myw3IEBACiAJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZG
RkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFE
RDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0
ZUZpZWxkUHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCODY5MDAyNEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERF
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDE1NCw4
ICs0MTU0LDYgQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFy
ci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQ
YXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc1LDYgKzQxNzMsOCBA
QAogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQ
cm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZmls
ZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjZBMTREMzVE
NTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzYzMCw2ICs3NjMwLDggQEAKIAkJCQkzN0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJ
bnQuaCAqLywKIAkJCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVD
cmVhdGluZ0Z1enplckFnZW50LmNwcCAqLywKIAkJCQlDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAg
LyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggKi8sCisJCQkJODZCODY5MDIy
NEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3BwICovLAorCQkJCTg2Qjg2
OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8sCiAJCQkJODY4
OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYx
REMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFE
MzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKQEAgLTg1MDEsOCAr
ODUwMyw2IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMu
aCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3Bw
ICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICov
LAotCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywK
LQkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJ
CTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQy
MEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FB
MjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC0xMDIzOSw2ICsx
MDIzOSw3IEBACiAJCQkJQ0UyMEJEMDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxl
Q3JlYXRpbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQjgxREVGM0FB
RTAwMkMwMDlFIC8qIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNjNERDU0MUVBOUI2MUUwMDEwM0E2OSAvKiBQcmludGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NkI4NjkwMTI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJv
YmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3OSw3ICsxMDI4MCw2IEBACiAJCQkJMEYx
NUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1
MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0
Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAppbmRleCA2ZjhlMjcxOTcyMTM1NTUxMjM4YTdiODQ3MTFhMTU2NzUwOWMzMzQw
Li5jNWUyYTY2YmM3MjFlMTA1MDNmMTU1ZWY2NjE1NmQwYTkwZGQzYTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNyArMjY5LDYgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKLWJ5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNl
V2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtOTQ0LDYgKzk0
Myw3IEBAIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNw
cAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6
emVyQWdlbnQuY3BwCitydW50aW1lL1ByaXZhdGVGaWVsZFB1dEtpbmQuY3BwCiBydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKIHJ1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmFmOTc1NzczMjM5ZGQwOGQ0OTM0Mzc2YjIwYjYz
MjNkZDRiZTVjMS4uNDFhZDdmNGI3NGFkNzI1NWRkNTE2MGFjNzdiYjZjODAzYTNlOWMyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00
NiwxMCArNDYsMTAgQEAgdHlwZXMgWwogICAgIDpMTEludENhbGxMaW5rSW5mbywKICAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAorICAgIDpQcml2YXRlRmllbGRQdXRLaW5kLAog
ICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCiAgICAg
OlB1dEJ5SWRGbGFncywKLSAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5cGUsCiAg
ICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NzQsNiArNTc0LDIwIEBAIG9w
IDpnZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2Vs
bF0sCiAgICAgfQogCitvcCA6cHV0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAg
IGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcHV0S2luZDogUHJp
dmF0ZUZpZWxkUHV0S2luZCwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0
cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltK
U0NlbGxdLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBuZXdTdHJ1Y3R1cmVJ
RDogU3RydWN0dXJlSUQsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU5OSw3ICs2MTMsNyBAQCBvcCA6cHV0
X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
cHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCisgICAgICAgIGVjbWFNb2RlOiBFQ01B
TW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKaW5kZXggMjllN2ExM2VmN2IxZDYwNWU5ODFhNmJlZWE0MDg5NzZiMjJjZWI4
Ny4uNDYwZTk3MzAxNjY5M2IxMjQ0NWU0MWIyZjgyOWE2YTVmNmY3NjU3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMjcs
NiArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxS
ZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRv
ckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBi
YXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5
KQorICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQogICAg
IFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFz
SW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk1LDYgKzM5Niw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBjYXNlIG9w
X3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9w
X3B1dF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAg
Y2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggODRmMzI3MGMyOTgyOGQ0NmFmZDIxNmZlMzIzYTAzNmFhYTQ4NzA2Yy4uZmYyYWRl
Y2ZmMjVjZjUxNTkyOTRjNWFhMmRkMDFmNDhiNjc5NWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0Miw2ICs1NDIsNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wSW5CeVZhbCkKICAgICAgICAgTElOSyhP
cFB1dEJ5VmFsKQogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCisgICAgICAgIExJTkso
T3BQdXRQcml2YXRlTmFtZSkKIAogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJ
TksoT3BOZXdBcnJheVdpdGhTaXplKQpAQCAtMTEzNiw2ICsxMTM3LDI1IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90
VmlzaXRvciYgdmlzCiAgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3Ry
dWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChu
ZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BQdXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1
cmVJRCB8fCAhbmV3U3RydWN0dXJlSUQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5Lmdl
dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAg
aWYgKCF2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPQorICAgICAg
ICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJl
SUQpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0KKyAgICAgICAg
ICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlE
KTsKKyAgICAgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChvbGRTdHJ1Y3R1cmUpKQor
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0cnVjdHVy
ZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMwMiw2ICsxMzIy
LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgfSk7CiAK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dFByaXZhdGVOYW1lPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CisgICAgICAgICAgICBKU0NlbGwq
IHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgIGlmICgo
IW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYgKCFwcm9wZXJ0
eSB8fCB2bS5oZWFwLmlzTWFya2VkKHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAmJiAoIW5l
d1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJ
bnQgcHV0X3ByaXZhdGVfbmFtZSB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAgbWV0YWRhdGEu
bV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaAppbmRleCAzOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJmNmI4YTBhYWUz
Li5lMDVhMjU2NDhhMTNiMDU5NzJmNjY0YzM3ZGUwOGNkM2M4OTQ5NTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgor
I2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgotI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1OCw0
NiArMjU4LDYgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgfQogfTsK
IAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywg
c2l6ZT4gewotICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+
Ojp1bnNpZ25lZFR5cGU7Ci0KLSAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5k
IGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKLSAgICAvLyAgICAgICAgICBpc1N0cmljdAotICAg
IC8vICAgICAgICAgICAgIHYKLSAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAotICAg
IC8vICAgICAgICAgICBeCi0gICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5v
bmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNE
aXJlY3RCaXQgPSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAy
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sg
PSAxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRT
aGlmdCA9IDI7Ci0KLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIFRhcmdldFR5cGUgY29u
dmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQotICAgIHsKLSAgICAgICAgYXV0byBpc0RpcmVjdCA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOwotICAgICAgICBhdXRvIGlz
U3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgp
KTsKLSAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKLSAgICAgICAgcmV0dXJuIChw
cml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8
IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OwotICAgIH0KLQotICAgIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCi0gICAgewotICAgICAgICBhdXRvIGlzRGly
ZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7Ci0gICAgICAgIGF1
dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKLSAg
ICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigo
Z3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nl
c3NLaW5kU2hpZnQpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3Mg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/Ci0gICAgICAgICAgICBpc0RpcmVjdCA/
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpj
cmVhdGUoZWNtYU1vZGUpIDoKLSAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1v
ZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsK
LSAgICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1
Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC00MjcsNCArMzg3LDI0IEBAIHN0cnVj
dCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKICAg
ICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQcml2YXRl
RmllbGRQdXRLaW5kLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1
c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNr
KFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNl
OjpjaGVjayhwdXRNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBC
YXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRNb2RlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQocHV0TW9kZS52YWx1ZSgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgUHJpdmF0ZUZpZWxkUHV0S2luZCBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6
OlRhcmdldFR5cGUgcHV0TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQcml2YXRlRmllbGRQ
dXRLaW5kOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KHB1dE1vZGUpKTsKKyAgICB9Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3